home *** CD-ROM | disk | FTP | other *** search
Text File | 1996-09-04 | 135.9 KB | 3,733 lines |
- Archive-name: linux/howto/scsi
- Last-modified: 2 July 1996
- Version: 2.29
-
- Copyright 1994, 1995, 1996, Drew Eckhardt
-
- This documentation is free documentation; you can redistribute it and/or
- modify it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This documentation is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this documentation; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
- That said, I'd appreciate it if people would ask me <drew@PoohSticks.ORG>
- if there's a newer version available before they publish it. When people
- publish outdated versions, I get questions from users that are answered
- in newer versions, and it reflects poorly on the publisher. I'd also prefer
- that all references to free distribution sites, and possibly competing
- distributions/products be left intact.
-
- IMPORTANT :
-
- BUG REPORTS OR OTHER REQUESTS FOR HELP WHICH FAIL TO FOLLOW THE PROCEDURES
- OUTLINED IN SECTION 2 WILL BE IGNORED.
-
- This HOWTO covers the Linux SCSI subsystem, as implemented in Linux
- kernel revision 1.2.10 and newer alpha code. Earlier revisions of the
- SCSI code are _unsupported_, and may differ significantly in terms of the
- drivers implemented, performance, and options available.
-
- For additional information, you may wish to join the linux-scsi mailing list
- by mailing majordomo@vger.rutgers.edu with the line
-
- subscribe linux-scsi
-
- in the text. You can unsubscribe by sending mail to the same address and
- including
-
- unsubscribe linux-scsi
-
- in the text.
-
- Once you're subscribed, you can send mail to the list at
-
- linux-scsi@vger.rutgers.edu
-
- I'm aware that this document isn't the most user-friendly,
- and that there may be inaccuracies and oversights. If
- you have constructive comments on how to rectify the situation
- you're free to mail me about it.
-
- Table of contents
- Section 1 Common Problems
- Section 1.1 General Flakiness
- Section 1.2 The kernel command line
- Section 1.3 A SCSI device shows up at all possible IDs
- Section 1.4 A SCSI device shows up at all possible LUNs
- Section 1.5 You get sense errors when you know the
- devices are error free
- Section 1.6 A kernel configured with networking does
- not work.
- Section 1.7 Device detected, but unable to access.
- Section 1.8 Sometimes the scsi subsystem locks up
- completely.
- Section 1.9 Configuring and building the kernel
- Section 1.10 LUNS other than 0 don't work
-
- Section 2 Reporting Bugs
- Section 2.1 Capturing messages
- Section 2.2 Locating the source of a panic()
-
- Section 3 Modules
- Section 3.1 General information.
- Section 3.2 Status of modules under 1.2 kernels.
- Section 3.3 Status of modules under 1.3 kernels.
-
- Section 4 Hosts
- Section 4.1 Supported and Unsupported Hardware
- Section 4.1.1 Multiple host adapters
- Section 4.2 Common Problems
- Section 4.3 Adaptec 152x, 151x, 1505, 282x,
- Sound Blaster 16 SCSI,
- SCSI Pro, Gigabyte, and other AIC
- 6260/6360 based products (Standard)
- Section 4.4 Adaptec 154x, Adaptec 1640, AMI FastDisk VLB,
- (DTC 329x may also work), (Standard)
- Section 4.5 Adaptec 174x (Standard)
- Section 4.6 Adaptec 274x, 284x (Standard), 294x (ALPHA)
- Section 4.7 Allways IN2000 (ALPHA)
- Section 4.8 BusLogic MultiMaster Host Adapters
- Section 4.9 BusLogic FlashPoint Host Adapters
- Section 4.10 EATA-DMA: DPT SmartCache, SmartCache Plus,
- SmartCache III, SmartCache IV and
- SmartRAID families (Standard)
- Section 4.11 EATA-PIO: DPT PM2001 and PM2012A
- Section 4.12 Future Domain 16x0 with TMC-1800, TMC-18C30,
- TMC-18C50, or TMC-36C70 chip (Standard)
- Section 4.13 Generic NCR5380 / T130B (Standard)
- Section 4.14 NCR53c8xx rel5 (Standard), rel10+ (ALPHA)
- Section 4.15 Seagate ST0x/Future Domain TMC-8xx/TMC-9xx
- (Standard)
- Section 4.16 PAS16 (Standard)
- Section 4.17 Trantor T128/T128F/T228 (Standard)
- Section 4.18 Ultrastor 14f, 24f, 34f (Standard)
- Section 4.19 Western Digital 7000 (Standard)
- Section 4.20 AM53/79C974 (ALPHA)
- Section 4.21 qlogic (STANDARD)
-
- Section 5 Disks
- Section 5.1 Supported and Unsupported Hardware
- Section 5.2 Common Problems
- Section 5.3 Device Files
- Section 5.4 Partitioning
- Section 5.5 Disk Geometry
-
- Section 6 CD ROMs
- Section 6.1 Supported and Unsupported Hardware
- Section 6.2 Common Problems
- Section 6.3 Device Files
-
- Section 7 Tapes
- Section 7.1 Supported and Unsupported Hardware
- Section 7.2 Common Problems
- Section 7.3 Device Files
-
- Section 8 Generic
- Section 8.1 Supported and Unsupported Hardware
- Section 8.2 Common Problems
- Section 8.3 Device Files
-
- Section 9 Buyers' Guide
- Section 9.1 Transfer types
- Section 9.2 Scatter/gather
- Section 9.3 Mailbox vs. non-mailbox
- Section 9.4 Bus types
- Section 9.5 Multiple devices
- Section 9.6 SCSI-I, SCSI-II, FAST and WIDE options, etc.
- Section 9.7 Driver feature comparison
- Section 9.8 Board comparison
- Section 9.9 Summary
-
- Section 10
- Section 10.1 Assignment of minor numbers.
-
- Section 1 : Common Problems
-
- This section lists some of the common problems that people
- have. If there is not anything here that answers your questions, you
- should also consult the sections for your host adapter and the devices
- in that are giving you problems.
-
- Section 1.1 : General Flakiness
- If you experience random errors, the most likely causes are
- cabling and termination problems.
-
- Some products, such as those built arround the newer NCR
- chips, feature digital filtering and active signal negation,
- and aren't very sensitive to cabling problems.
-
- Others, such as the Adaptec 154xC, 154xCF, and 274x, are _extremely_
- sensitive and may fail with cables that work with other systems.
-
- I reiterate : some host adapters are _extremely_ sensitive to
- cabling and termination problems and therefore, cabling and
- termination should be the first things checked when there are
- problems.
-
- To minimize your problems, you should use cables which
-
- 1. Claim SCSI-II compliance
- 2. Have a characteristic impedance of 132 ohms
- 3. All come from the same source to avoid impedance mismatches
- 4. Come from a reputable vendor such as Amphenol
-
- Termination power should be provided by _all_ devices on
- the SCSI bus, through a diode to prevent current backflow,
- so that sufficient power is available at the ends of the cable
- where it is needed. To prevent damage if the bus is shorted,
- TERMPWR should be driven through a fuse or other current
- limiting device.
-
- If multiple devices, external cables, or FAST SCSI 2 are used,
- active or forced perfect termination should be used on both ends
- of the SCSI bus.
-
- See the Comp.Periphs.Scsi FAQ (available on tsx-11 in
- pub/linux/ALPHA/scsi) for more information about active
- termination.
-
- Section 1.2 : The kernel command line
-
- Other parts of the documentation refer to a "kernel command line".
-
- The kernel command line is a set of options you may specify
- from either the LILO : prompt after an immage name, or in the
- append field in your LILO configuration file (LILO .14
- and newer use /etc/lilo.conf, older versions use /etc/lilo/config).
-
- Boot your system with LILO, and hit one of the alt, control, or
- shift keys when it first comes up to get a prompt. LILO
- should respond with
-
- :
-
- At this prompt, you can select a kernel image to boot, or list
- them with ?. Ie
-
- :?
-
- ramdisk floppy harddisk
-
- To boot that kernel with the command line options you have
- selected, simply enter the name followed by a white space delimited
- list of options, terminating with a return.
-
- Options take the form of
-
- variable=valuelist
-
- Where valuelist may be a single value or comma delimited list
- of values with no whitespace. With the exception of root device,
- individual values are numbers, and may be specified in either
- decimal or hexadecimal.
-
- Ie, to boot linux with an Adaptec 1520 clone not recognized
- at bootup, you might type
-
- :floppy aha152x=0x340,11,7,1
-
- If you don't care to type all of this at boot time, it is also
- possible to use the LILO configuration file "append" option
- with LILO .13 and newer.
-
- Ie,
- append="aha152x=0x340,11,7,1"
-
-
- Section 1.3 : A SCSI device shows up at all possible IDs
-
- If this is the case, you have strapped the device at the same
- address as the controller (typically 7, although some boards
- use other addresses, with 6 being used by some Future Domain
- boards).
-
- Please change the jumper settings.
-
- Section 1.4 : A SCSI device shows up at all possible LUNs
-
- The device has buggy firmware.
-
- As an interim sollution, you should try using the kernel
- command line option
-
- max_scsi_luns=1
-
- If that works, there is a list of buggy devices
- in the kernel sources in drivers/scsi/scsi.c in the variable
- blacklist. Add your device to this list and mail the patch
- to Linus Torvalds <Linus.Torvalds@cs.Helsinki.FI>.
-
- Section 1.5 : You get sense errors when you know the devices are error free
-
- Sometimes this is caused by bad cables or impropper termination.
-
- See Section 1.1 : General Flakiness
-
- Section 1.6 : A kernel configured with networking does not work.
-
- The auto-probe routines for many of the network drivers
- are not passive, and will interfere with operation with some
- of the SCSI drivers.
-
- Section 1.7 : Device detected, but unable to access.
-
- A SCSI device is detected by the kernel, but you are unable to
- access it - ie mkfs /dev/sdc, tar xvf /dev/rst2, etc fails.
-
- You don't have a special file in /dev for the device.
-
- Unix devices are identified as either block or character (block
- devices go through the buffer cache, character devices do not) devices,
- a major number (ie which driver is used - block major 8 corresponds
- to SCSI disks) and a minor number (ie which unit is being accessed
- through a given driver - ie character major 4, minor 0 is the first
- virtual console, minor 1 the next, etc). However, accessing devices
- through this separate namespace would break the unix/Linux metaphor of
- "everything is a file," so character and block device special files
- are created under /dev. This lets you access the raw third SCSI disk
- device as /dev/sdc, the first serial port as /dev/ttyS0, etc.
-
- The preferred method for creating a file is using the MAKEDEV script -
- cd /dev
-
- and run MAKEDEV (as root) for the devices you want to create - ie
-
- ./MAKEDEV sdc
-
- wildcards "should" work - ie
-
- ./MAKEDEV sd\*
-
- "should" create entries for all SCSI disk devices (doing this should
- create /dev/sda through /dev/sdp, with fifteen partition entries for
- each)
-
- ./MAKEDEV sdc\*
-
- "should" create entries for /dev/sdc and all fifteen permissible
- partitions on /dev/sdc, etc.
-
- I say "should" because this is the standard unix behavior - the MAKEDEV
- script in your installation may not conform to this behavior, or may
- have restricted the number of devices it will create.
-
- If MAKEDEV won't do the right magic for you, you'll have to create the
- device entries by hand with the mknod command.
-
- The block/character type, major, and minor numbers are specified for the
- various SCSI devices in Subsection 4 : Device Files in the appropriate
- section.
-
- Take those numbers, and use (as root)
-
- mknod /dev/device b|c major minor
-
- ie -
-
- mknod /dev/sdc b 8 32
- mknod /dev/rst0 c 9 0
-
- Section 1.8 : SCSI System Lockups
-
- This could be one of a number of things. Also see the section for
- your specific host adapter for possible further solutions.
-
- There are cases where the lockups seem to occur when multiple devices
- are in use at the same time. In this case, you can try contacting
- the manufacturer of the devices and see if firmware upgrades are
- available which would correct the problem. If possible, try a
- different scsi cable, or try on another system. This can also
- be caused by bad blocks on disks, or by bad handling of DMA by the
- motherboard (for host adapters that do DMA). There are probably
- many other possible conditions that could lead to this type of event.
-
- Sometimes these problems occur when there are multiple devices in
- use on the bus at the same time. In this case, if your host
- adapter driver supports more than one outstanding command on the bus
- at one time, try reducing this to 1 and see if this helps. If you
- have tape drives or slow cdrom drives on the bus, this might not be
- a practical solution.
-
- Section 1.9 : Configuring and building the kernel
-
- Unused SCSI drivers eat up valuable memory, aggravating
- memory shortage problems on small systems because kernel
- memory is unpagable.
-
- So, you will want to build a kernel tuned for your
- system, with only the drivers you need installed.
-
- cd to /usr/src/linux
-
- If you are using a root device other than the current
- one, or something other than 80x25 VGA, and you are
- writing a boot floppy, you should edit the makefile,
- and make sure the
-
- ROOT_DEV =
-
- and
-
- SVGA_MODE =
-
- lines are the way you want them.
-
- If you've installed any patches, you may wish to guarantee that all
- files are rebuilt. If this is the case, you should type
-
- make mrproper
-
- Irregardless of weather you ran make mrproper, type
-
- make config
-
- and answer the configuration questions. Then run
-
- make depend
-
- and finally
-
- make
-
- Once the build completes, you may wish to update the
- lilo configuration, or write a boot floppy. A boot floppy
- may be made by running
-
- make zdisk
-
- Section 1.10 : LUNS other than 0 don't work
-
- Many SCSI devices are horrendously broken, lock the SCSI
- bus up solid, and do other bad things when you attempt to
- talk to them at a logical unit someplace other than zero.
-
- So, by default recent versions of the Linux kernel will not
- probe luns other than 0. To work arround this, you need to
- the max_scsi_luns command line option, or recompile the kernel
- wiuth the CONFIG_SCSI_MULTI_LUN option.
-
- Usually, you'll put
-
- max_scsi_luns=8
-
- on your LILO command line.
-
- If your multi-LUN devices still aren't detected correctly after
- trying one of these fixes (as the case will be with many old
- SCSI->MFM, RLL, ESDI, SMD, and similar bridge boards), you'll
- be thwarted by this piece of code
-
- /* Some scsi-1 peripherals do not handle lun != 0.
- I am assuming that scsi-2 peripherals do better */
- if((scsi_result[2] & 0x07) == 1 &&
- (scsi_result[3] & 0x0f) == 0) break;
-
- in scan_scsis() in drivers/scsi/scsi.c. Delete this code,
- and you should be fine.
-
- Section 2 : Reporting Bugs
-
- The Linux SCSI developers don't necessarily maintain old revisions
- of the code due to space constraints. So, if you are not running the
- latest publically released Linux kernel (note that many of the Linux
- distributions, such as MCC, SLS, Yggdrasil, etc. often lag one or even
- twenty patches behind this) chances are we will be unable to solve your
- problem. So, before reporting a bug, please check to see if it exists
- with the latest publically available kernel.
-
- If after upgrading, and reading this document thoroughly, you still
- believe that you have a bug, please mail a bug report to the SCSI channel
- of the mailing list where it will be seen by many of the people who've
- contributed to the Linux SCSI drivers.
-
- In your bug report, please provide as much information as possible
- regarding your hardware configuration, the exact text of
- all of the messages that Linux prints when it boots, when the
- error condition occurs, and where in the source code the error
- is. Use the procedures outlined in Section 2.1 : Capturing
- messages and Section 2.2 : Locating the source of a panic().
-
- Failure to provide the maximum possible amount of information
- may result in misdiagnosis of your problem, or developers
- deciding that there are other more interesting problems to
- fix.
-
- The bottom line is that if we can't reproduce your bug, and you can't
- point at us what's broken, it won't get fixed.
-
- Section 2.1 : Capturing messages
-
- If you are not running a kernel message logging system :
-
- Insure that the /proc filesystem is mounted.
-
- grep proc /etc/mtab
-
- If the /proc filesystem is not mounted, mount it
-
- mkdir /proc
- chmod 755 /proc
- mount -t proc /proc /proc
-
- Copy the kernel revision and messages into a log file
-
- cat /proc/version > /tmp/log
- cat /proc/kmsg >> /tmp/log
-
- Type CNTRL-C after a second or two.
-
- If you are running some logger, you'll have to poke through the
- appropriate log files (/etc/syslog.conf should be of some use
- in locating them), or use dmesg.
-
- If Linux is not yet bootstrapped, format a floppy diskette under DOS.
- Note that if you have a distribution which mounts the root diskette off of
- floppy rather than RAM drive, you'll have to format a diskette readable
- in the drive not being used to mount root or use their ramdisk boot option.
-
- Boot Linux off your distribution boot floppy, preferably in single user mode
- using a RAM disk as root.
-
- mkdir /tmp/dos
-
- Insert the diskette in a drive not being used to mount root, and
- mount it. Ie
-
- mount -t msdos /dev/fd0 /tmp/dos
-
- or
-
- mount -t msdos /dev/fd1 /tmp/dos
-
- Copy your log to it
-
- cp /tmp/log /tmp/dos/log
-
- Unmount the DOS floppy
-
- umount /tmp/dos
-
- And shutdown Linux
-
- shutdown
-
- Reboot into DOS, and using your favorite communications software include
- the log file in your trouble mail.
-
- Section 2.2 : Locating the source of a panic()
-
- Like other unices, when a fatal error is encountered, Linux calls the
- kernel panic() function. Unlike other unices, Linux doesn't dump
- core to the swap or dump device and reboot automatically. Instead,
- a useful summary of state information is printed for the user to
- manually copy down. Ie :
-
- Unable to handle kernel NULL pointer dereference at virtual address c0000004
- current->tss,cr3 = 00101000, %cr3 = 00101000
- *pde = 00102027
- *pte = 00000027
- Oops: 0000
- EIP: 0010:0019c905
- EFLAGS: 00010002
- eax: 0000000a ebx: 001cd0e8 ecx: 00000006 edx: 000003d5
- esi: 001cd0a8 edi: 00000000 ebp: 00000000 esp: 001a18c0
- ds: 0018 es: 0018 fs: 002b gs: 002b ss: 0018
- Process swapper (pid: 0, process nr: 0, stackpage=001a09c8)
- Stack: 0019c5c6 00000000 0019c5b2 00000000 0019c5a5 001cd0a8 00000002 00000000
- 001cd0e8 001cd0a8 00000000 001cdb38 001cdb00 00000000 001ce284 0019d001
- 001cd004 0000e800 fbfff000 0019d051 001cd0a8 00000000 001a29f4 00800000
- Call Trace: 0019c5c6 0019c5b2 0018c5a5 0019d001 0019d051 00111508 00111502
- 0011e800 0011154d 00110f63 0010e2b3 0010ef55 0010ddb7
- Code: 8b 57 04 52 68 d2 c5 19 00 e8 cd a0 f7 ff 83 c4 20 8b 4f 04
- Aiee, killing interrupt handler
- kfree of non-kmalloced memory: 001a29c0, next= 00000000, order=0
- task[0] (swapper) killed: unable to recover
- Kernel panic: Trying to free up swapper memory space
- In swapper task - not syncing
-
- Take the hexidecimal number on the EIP: line, in this case 19c905, and search
- through /usr/src/linux/zSystem.map for the highest number not larger than
- that address. Ie,
-
- 0019a000 T _fix_pointers
- 0019c700 t _intr_scsi
- 0019d000 t _NCR53c7x0_intr
-
- That tells you what function its in. Recompile the source file which
- defines that function file with debugging enabled, or the whole kernel
- if you prefer by editing /usr/src/linux/Makefile and adding a "-g"
- to the CFLAGS definition.
-
- #
- # standard CFLAGS
- #
-
- Ie,
-
- CFLAGS = -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -pipe
-
- becomes
-
- CFLAGS = -g -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -pipe
-
- Rebuild the kernel, incrementally or by doing a
-
- make clean
- make
-
- Make the kernel bootable by creating an entry in your /etc/lilo.conf
- for it
-
- image = /usr/src/linux/zImage
- label = experimental
-
- and re-running LILO as root, or by creating a boot floppy
-
- make zImage
-
- Reboot and record the new EIP for the error.
-
- If you have script installed, you may want to start it, as
- it will log your debugging session to the typescript file.
-
- Now, run
-
- gdb /usr/src/linux/tools/zSystem
-
- and enter
-
- info line *<your EIP>
-
- Ie,
- info line *0x19c905
-
- To which GDB will respond something like
-
- (gdb) info line *0x19c905
- Line 2855 of "53c7,8xx.c" starts at address 0x19c905 <intr_scsi+641>
- and ends at 0x19c913 <intr_scsi+655>.
-
- Record this information. Then, enter
- list <line number>
-
- Ie,
-
- (gdb) list 2855
- 2850 /* printk("scsi%d : target %d lun %d unexpected disconnect\n",
- 2851 host->host_no, cmd->cmd->target, cmd->cmd->lun); */
- 2852 printk("host : 0x%x\n", (unsigned) host);
- 2853 printk("host->host_no : %d\n", host->host_no);
- 2854 printk("cmd : 0x%x\n", (unsigned) cmd);
- 2855 printk("cmd->cmd : 0x%x\n", (unsigned) cmd->cmd);
- 2856 printk("cmd->cmd->target : %d\n", cmd->cmd->target);
- 2857 if (cmd) {
- 2858 abnormal_finished(cmd, DID_ERROR << 16);
- 2859 }
- 2860 hostdata->dsp = hostdata->script + hostdata->E_schedule /
- 2861 sizeof(long);
- 2862 hostdata->dsp_changed = 1;
- 2863 /* SCSI PARITY error */
- 2864 }
- 2865
- 2866 if (sstat0_sist0 & SSTAT0_PAR) {
- 2867 fatal = 1;
- 2868 if (cmd && cmd->cmd) {
- 2869 printk("scsi%d : target %d lun %d parity error.\n",
-
- Obviously, quit will take you out of GDB.
-
- Record this information too, as it will provide a context incase the
- developers' kernels differ from yours.
-
- Section 3 : Modules
-
- This section gives specific details regarding the support for loadable
- kernel modules and how it relates to SCSI.
-
- Section 3.1 : General Information
-
- Loadable modules are a means by which the user or system administrator
- can load files into the kernel's memory in such a way that the kernel's
- capabilities are expanded. The most common usages of modules are for
- drivers to support hardware, or to load filessytems.
-
- There are several advantages of modules for SCSI. One is that a
- system administrator trying to maintain a large number of machines can
- use a single kernel image for all of the machines, and then load
- kernel modules to support hardware that is only present on some
- machines.
-
- It is also possible for someone trying to create a distribution to use
- a script on the bootable floppy to query for which modules to be
- loaded. This saves memory that would otherwise be wasted on unused
- drivers, and it would also reduce the possibility that a probe for a
- non-existant card would screw up some other card on the system.
-
- Modules also work out nicely on laptops, which tend to have less
- memory than desktop machines, and people tend to want to keep the
- kernel image as small as possible and load modules as required. Also,
- modules makes supporting PCMCIA SCSI cards on laptops somewhat easier,
- since you can load and unload the driver as the card is
- inserted/removed. [Note: currently the qlogic and 152x drivers support
- PCMCIA].
-
- Finally, there is the advantage that kernel developers can more easily
- debug and test their drivers, since testing a new driver does not
- require rebooting the machine (provided of course that the machine has
- not completely crashed as a result of some bug in the driver).
-
- Although modules are very nice, there is one limitation. If your root
- disk partition is on a scsi device, you will not be able to use
- modularized versions of scsi code required to access the disk. This
- is because the system must be able to mount the root partition before
- it can load any modules from disk. There are people thinking about
- ways of fixing the loader and the kernel so that the kernel can
- self-load modules prior to attempting to mount the root filesystem,
- so at some point in the future this limitation may be lifted.
-
- Section 3.2 : Module support in the 1.2.N kernel.
-
- In the 1.2.N series of kernels, there is partial support for SCSI
- kernel modules. While none of the high level drivers (such as disk,
- tape, etc) can be used as modules, most of the low level drivers
- (i.e. 1542, 1522) can be loaded and unloaded as required. Each time
- you load a low-level driver, the driver first searches for cards that
- can be driven. Next, the bus is scanned for each card that is found,
- and then the internal data structures are set up so as to make it
- possible to actually use the devices attached to the cards that the
- driver is managing.
-
- When you are through with a low-level driver, you can unload
- it. You should keep in mind that usage counts are maintained based upon
- mounted filesystems, open files, etc, so that if you are still using a
- device that the driver is managing, the rmmod utillity will tell you that
- the device is still busy and refuse to unload the driver. When the driver
- is unloaded, all of the associated data structures are also freed so that
- the system state should be back to where it was before the module was loaded.
- This means that the driver could be reloaded at a later time if required.
-
- Section 3.3 : Module support in the 1.3.N kernel.
-
- In the 1.3 series of kernels, the scsi code is completely modularized.
- This means that you can start with a kernel that has no scsi support
- whatsoever, and start loading modules and you will eventually end up
- with complete support.
-
- If you wish, you can compile some parts of the SCSI code into the kernel
- and then load other parts later - it is all up to you how much gets loaded
- at runtime and how much is linked directly into the kernel.
-
- If you are starting with a kernel that has no support whatsoever for
- SCSI, then the first thing you will need to do is to load the scsi
- core into the kernel - this is in a module called "scsi_mod". You
- will not be able to load any other scsi modules until you have this
- loaded into kernel memory. Since this does not contain any low-level
- drivers, the act of loading this module will not scan any busses, nor
- will it activate any drivers for scsi disks, tapes, etc. If you answered
- 'Y' to the CONFIG_SCSI question when you built your kernel, you will not
- need to load this module.
-
- At this point you can add modules in more or less any order to achieve
- the desired functionality. Usage counts are interlocks are used to
- prevent unloading of any component which might still be in use, and
- you will get a message from rmmod if a module is still busy.
-
- The high level drivers are in modules named "sd_mod", "sr_mod", "st",
- and "sg", for disk, cdrom, tape, and scsi generics support
- respectively. When you load a high level driver, the device list for
- all attached hosts is examined for devices which the high level driver
- can drive, and these are automatically activated.
-
- The use of modules with low level drivers were described in the
- Section 3.2. When a low-level driver is loaded, the bus is scanned,
- and each device is examined by each of the high level drivers to see
- if they recognize it as something that they can drive - anything
- recognized is automatically attached and activated.
-
- Section 4 : Hosts
-
- This section gives specific information about the various host adapters that
- are supported in some way or another under linux.
-
- Section 4.1 : Supported and Unsupported Hardware
- Drivers in the distribution kernel :
-
- Adaptec 152x, Adaptec 154x (DTC 329x boards usually work, but are unsupported),
- Adaptec 174x, Adaptec 274x/284x (294x support requires a newer version of the
- driver), BusLogic MultiMaster Host Adapters, EATA-DMA and EATA-PIO protocol
- compilant boards (DPT PM2001, PM2011, PM2012A, PM2012B, PM2021, PM2022, PM2024,
- PM2122, PM2124, PM2322, PM2041, PM2042, PM2044, PM2142, PM2144, PM2322, PM3021,
- PM3122, PM3222, PM3224, PM3334 some boards from NEC, AT&T, SNI, AST, Olivetti,
- and Alphatronix), Future Domain 850, 885, 950, and other boards in that series
- (but not the 840, 841, 880, and 881 boards unless you make the appropriate
- patch), Future Domain 16x0 with TMC-1800, TMC-18C30, or TMC-18C50 chips,
- NCR53c8xx,PAS16 SCSI ports, Seagate ST0x, Trantor T128/T130/T228 boards,
- Ultrastor 14F, 24F, and 34F, and Western Digital 7000.
-
- MCA :
-
- MCA boards which are compatable with a supported board (ie,
- Adaptec 1640 and BusLogic 640) will work.
-
- Alpha drivers :
-
- Many ALPHA drivers are available at
- ftp://tsx-11.mit.edu/pub/linux/ALPHA/scsi
-
- Drivers which will work with modifications
-
- NCR53c8x0/7x0:
-
- A NCR53c8xx driver has been developed, but currently will not work
- with NCR53c700, NCR53c700-66, NCR53c710, and NCR53c720 chips. A list
- of changes needed to make each of these chips work follows, as well
- as a summary of the complexity.
-
- NCR53c720 (trivial) - detection changes, initializaion changes, change
- fixup code to translate '810 register addresses to
- '7xx mapping.
-
- NCR53c710 (trivial) - detection changes, initialization changes,
- of assembler, change fixup code to translate '810 register
- addresses to '7xx mapping, change interrupt handlers to treat
- IID interrupt from INTFLY instruction to emulate it.
-
- NCR53c700, NCR53c700-66 (very messy) - detection changes,
- initialization changes, modification of NCR code to not use DSA,
- modification of Linux code to handle context switches.
-
- SCSI hosts that will not work :
-
- All parallel->SCSI adapters, Rancho SCSI boards, and Grass Roots SCSI
- boards. BusLogic FlashPoint boards, such as the BT-930/932/950, are
- currently unsupported.
-
- SCSI hosts that will NEVER work :
-
- Non Adaptec compatable, non NCR53c8xx DTC boards (including the 3270 and 3280).
-
- CMD SCSI boards.
-
- Aquiring programming information requires a non-disclosure agreement
- with DTC/CMD. This means that it would be impossible to distribute a
- Linux driver if one were written, since complying with the NDA would
- mean distributing no source, in violation of the GPL, and complying
- with the GPL would mean distributing source, in violation of the NDA.
-
- If you want to run Linux on some other unsupported piece of hardware, your
- options are to either write a driver yourself (Eric Youngdale and I are
- usually willing to answer technical questions concerning the Linux
- SCSI drivers) or to commision a driver (Normal consulting rates
- mean that this will not be a viable option for personal use).
-
- Section 4.1.1 : Multiple host adapters
-
- With some host adapters (see Section 9.7 : Buyers' Guide :
- Feature Comparison), you can use multiple host adapters of the
- same type in the same system. With multiple adapters of the
- same type in the same system, generally the one at the lowest
- address will be scsi0, the one at the next address scsi1, etc.
-
- In all cases, it is possible to use multiple host adapters of
- different types, provided that none of their addresses conflict.
- SCSI controllers are scanned in the order specified in the
- builtin_scsi_hosts[] array in drivers/scsi/hosts.c, with
- the order currently being
-
- BusLogic, Ultrastor 14/34F, Ultrastor 14F,, Adaptec 151x/152x,
- Adaptec 154x, Adaptec 174x, AIC7XXX, AM53C974, Future Domain 16x0,
- Allways IN2000, Generic NCR5380, QLOGIC, PAS16, Seagate,
- Trantor T128/T130, NCR53c8xx, EATA-DMA, WD7000, debugging driver.
-
- In most cases (ie, you aren't trying to use both BusLogic and Adaptec drivers),
- this can be changed to suit your needs (ie, keeping the same devices when new
- SCSI devices are added to the system on a new controller) by moving the
- individual entries.
-
- Section 4.2 : Common Problems
- Section 4.2.1 : SCSI timeouts
- Make sure interrupts are enabled correctly, and there are no
- IRQ, DMA, or address conflicts with other boards.
-
- Section 4.2.2 : Failure of autoprobe routines on boards that rely on
- BIOS for autoprobe.
-
- If your SCSI adapter is one of the following :
-
- Adaptec 152x, Adaptec 151x, Adaptec AIC-6260,
- Adaptec AIC-6360, Future Domain 1680, Future Domain TMC-950,
- Future Domain TMC-8xx, Trantor T128, Trantor T128F,
- Trantor T228F, Seagate ST01, Seagate ST02, or a
- Western Digital 7000
-
- and it is not detected on bootup, ie you get a
-
- scsi : 0 hosts
-
- message or a
-
- scsi%d : type
-
- message is not printed for each supported SCSI adapter installed
- in the system, you may have a problem with the autoprobe routine
- not knowing about your board.
-
- Autodetection will fail for drivers using the BIOS for autodetection
- if the BIOS is disabled. Double check that your BIOS is enabled,
- and not conflicting with any other peripherial BIOSes.
-
- Autodetection will also fail if the board's "signature" and/or
- BIOS address don't match known ones.
-
- If the BIOS is installed, please use DOS and DEBUG to
- find a signature that will detect your board -
-
- Ie, if your board lives at 0xc8000, under DOS do
-
- debug
- d c800:0
- q
-
- and send a message to the SCSI channel of the mailing list with
- the ASCII message, with the length and offset from the base
- address (ie, 0xc8000). Note that the EXACT text is required,
- and you should provide both the hex and ASCII portions of
- the text.
-
- If no BIOS is installed, and you are using an Adaptec 152x,
- Trantor T128, or Seagate driver, you can use command line
- or compile time overrides to force detection.
-
- Please consult the appropriate subsection for your SCSI board
- as well as Section 1.1 :
-
-
- Section 4.2.3 : Failure of boards using memory mapped I/O
-
- (This include the Trantor T128 and Seagate boards, but not the
- Adaptec, Generic NCR5380, PAS16, and Ultrastor drivers)
-
- This is often caused when the memory mapped I/O ports
- are incorrectly cached. You should have the board's
- address space marked as uncachable in the XCMOS settings.
-
- If this is not possible, you will have to disable cache
- entirely.
-
- If you have manually specified the address of the board,
- remember that Linux needs the actual address of the board,
- and not the 16 byte segment the documentation may refer to.
-
- Ie, 0xc8000 would be correct, 0xc800 would not work
- and could cause memory corruption.
-
- Section 4.2.4 : "kernel panic : cannot mount root device" when booting
- an ALPHA driver boot floppy
-
- You'll need to edit the binary image of the kernel (before
- or after writing it out to disk), and modify a few two byte
- fields (little endian) to gurantee that it will work on your
- system.
-
- 1. default swap device at offset 502, this should be set to 0x00 0x00
-
- 2. ram disk size at offset 504, this should be set to the size
- of the boot floppy in K - ie, 5.25" = 1200, 3.5" = 1440.
-
- This means the bytes are
-
- 3.5" : 0xA0 0x05
- 5.25" : 0xB0 0x04
-
- 3. root device offset at 508, this should be 0x00 0x00, ie the boot
- device.
-
- dd or rawrite the file to a disk. Insert the disk in the
- first floppy drive, wait until it prompts you to insert
- the root disk, and insert the root floppy from your
- distribution.
-
-
- Section 4.2.5 : Installing a device driver not included with the distribution
- kernel
-
- You need to start with the version of the kernel used by the
- driver author. This revision may be alluded to in the documentation
- included with the driver.
-
- Various recent kernel revisions can be found at
- nic.funet.fi:/pub/OS/Linux/PEOPLE/Linus
-
- as linux-version.tar.gz
-
- They are also mirrored at tsx-11.mit.edu and various other sites.
-
- cd to /usr/src.
-
- Remove your old Linux sources, if you want to keep a backup copy
- of them
-
- mv linux linux-old
-
- Untar the archive
-
- gunzip < linux-0.99.12.tar.gz | tar xvfp -
-
- Apply the patches. The patches will be relative to some directory
- in the filesystem. By examining the output file lines in the patch
- file (grep for ^---), you can tell where this is - ie patches with
- these lines
-
- --- ./kernel/blk_drv/scsi/Makefile
-
- --- ./config.in Wed Sep 1 16:19:33 1993
-
-
- would have the files relative to /usr/src/linux.
-
- Untar the driver sources at an appropriate place - you
- can type
-
- tar tfv patches.tar
-
- to get a listing, and move files as necessary (The SCSI driver files
- should live in /usr/src/linux/kernel/drivers/scsi)
-
- Either cd to the directory they are relative to and type
-
- patch -p0 < patch_file
-
- or tell patch to strip off leading path components. Ie,
- if the files started with
-
- --- linux-new/kernel/blk_drv/scsi/Makefile
-
- and you wanted to apply them while in /usr/src/linux, you
- could cd to /usr/src/linux and type
-
- patch -p1 < patches
-
- to strip off the "linux-new" component.
-
- After you have applied the patches, look for any patch rejects,
- which will be the name of the rejected file with a # suffix appended.
-
- find /usr/src/linux/ -name "*#" -print
-
- If any of these exist, look at them. In some cases, the
- differences will be in RCS identifiers and will be harmless,
- in other cases, you'll have to manually apply important
- parts. Documentation on diff files and patch is beyond the
- scope of this document.
-
- See also Section 1.8 : Configuring and building the kernel
-
- Section 4.2.6 : Installing a driver that has no patches
-
- In some cases, a driver author may not offer patches with
- the .c and .h files which comprise his driver, or the patches
- may be against an older revision of the kernel and not go
- in cleanly.
-
- 1. Copy the .c and .h files into /usr/src/linux/drivers/scsi
-
- 2. Add the configuration option
-
- Edit /usr/src/linux/config.in, and add a line in the
-
- *
- * SCSI low-level drivers
- *
-
- section, add a boolean configuration variable for your
- driver. Ie,
-
- bool 'Allways IN2000 SCSI support' CONFIG_SCSI_IN2000 y
-
- 3. Add the makefile entries
-
- Edit /usr/src/linux/drivers/scsi/Makefile, and add
- an entry like
-
- ifdef CONFIG_SCSI_IN2000
- SCSI_OBS := $(SCSI_OBJS) in2000.o
- SCSI_SRCS := $(SCSI_SRCS) in2000.c
- endif
-
- before the
-
- scsi.a: $(SCSI_OBJS)
-
- line in the makefile, where the .c file is the .c
- file you copied in, and the .o file is the basename
- of the .c file with a .o suffixed.
-
- 4. Add the entry points
-
- Edit /usr/src/linux/drivers/scsi/hosts.c, and
- add a #inlclude for the header file, conditional
- on the CONFIG_SCSI preprocessor define you
- added to the configuration file. Ie, after
-
- #ifdef CONFIG_SCSI_GENERIC_NCR5380
- #include "g_NCR5380.h"
- #endif
-
- you might add
-
- #ifdef CONFIG_SCSI_IN2000
- #include "in2000.h"
- #endif
-
- You will also need to add the Scsi_Host_Template
- entry into the scsi_hosts[] array. Take a look
- into the .h file, and you should find a #define that
- looks something like this :
-
- #define IN2000 {"Always IN2000", in2000_detect, \
- in2000_info, in2000_command, \
- in2000_queuecommand, \
- in2000_abort, \
- in2000_reset, \
- NULL, \
- in2000_biosparam, \
- 1, 7, IN2000_SG, 1, 0, 0}
-
- the name of the preprocessor define, and add
- it into the scsi_hosts[] array, conditional on
- definition of the preprocessor symbol you used
- in the configuration file.
-
- Ie, after
-
- #ifdef CONFIG_SCSI_GENERIC_NCR5380
- GENERIC_NCR5380,
- #endif
-
- you might add
-
- #ifdef CONFIG_SCSI_IN2000
- IN2000,
- #endif
-
- See also Section 1.8 : Configuring and building the kernel
-
- Section 4.2.7 : Failure of a PCI board in a Compaq System
-
- A number of Compaq systems map the 32-bit BIOS extensions used
- to probe for PCI devices into memory which is inaccessable to
- the Linux kernel due to the memory layout. If Linux is
- unable to detect a supported PCI SCSI board, and the
- kernel tells you something like
-
- pcibios_init: entry in high memory, unable to access
-
- Grab
-
- ftp://ftp.compaq.com/pub/softpaq/Software-Solutions/sp0921.zip
-
- which is a self-extracting archive of a program which will
- relocate the BIOS32 code.
-
- Section 4.2.8 : A SCSI system with PCI boards hangs after the
- %d Hosts message
-
- Some PCI systems have broken BIOSes which disable interrupts
- and fail to renable them before returning control to the
- caller. The following patch fixes this
-
- --- bios32.c.orig Mon Nov 13 22:35:31 1995
- +++ bios32.c Thu Jan 18 00:15:09 1996
- @@ -56,6 +56,7 @@
- #include <linux/pci.h>
-
- #include <asm/segment.h>
- +#include <asm/system.h>
-
- #define PCIBIOS_PCI_FUNCTION_ID 0xb1XX
- #define PCIBIOS_PCI_BIOS_PRESENT 0xb101
- @@ -125,7 +126,9 @@
- unsigned long address; /* %ebx */
- unsigned long length; /* %ecx */
- unsigned long entry; /* %edx */
- + unsigned long flags;
-
- + save_flags(flags);
- __asm__("lcall (%%edi)"
- : "=a" (return_code),
- "=b" (address),
- @@ -134,6 +137,7 @@
- : "0" (service),
- "1" (0),
- "D" (&bios32_indirect));
- + restore_flags(flags);
-
- switch (return_code) {
- case 0:
- @@ -161,11 +165,13 @@
- unsigned char present_status;
- unsigned char major_revision;
- unsigned char minor_revision;
- + unsigned long flags;
- int pack;
-
- if ((pcibios_entry = bios32_service(PCI_SERVICE))) {
- pci_indirect.address = pcibios_entry;
-
- + save_flags(flags);
- __asm__("lcall (%%edi)\n\t"
- "jc 1f\n\t"
- "xor %%ah, %%ah\n"
- @@ -176,6 +182,7 @@
- : "1" (PCIBIOS_PCI_BIOS_PRESENT),
- "D" (&pci_indirect)
- : "bx", "cx");
- + restore_flags(flags);
-
- present_status = (pack >> 16) & 0xff;
- major_revision = (pack >> 8) & 0xff;
- @@ -210,7 +217,9 @@
- {
- unsigned long bx;
- unsigned long ret;
- + unsigned long flags;
-
- + save_flags(flags);
- __asm__ ("lcall (%%edi)\n\t"
- "jc 1f\n\t"
- "xor %%ah, %%ah\n"
- @@ -221,6 +230,7 @@
- "c" (class_code),
- "S" ((int) index),
- "D" (&pci_indirect));
- + restore_flags(flags);
- *bus = (bx >> 8) & 0xff;
- *device_fn = bx & 0xff;
- return (int) (ret & 0xff00) >> 8;
- @@ -232,7 +242,9 @@
- {
- unsigned short bx;
- unsigned short ret;
- + unsigned long flags;
-
- + save_flags(flags);
- __asm__("lcall (%%edi)\n\t"
- "jc 1f\n\t"
- "xor %%ah, %%ah\n"
- @@ -244,6 +256,7 @@
- "d" (vendor),
- "S" ((int) index),
- "D" (&pci_indirect));
- + restore_flags(flags);
- *bus = (bx >> 8) & 0xff;
- *device_fn = bx & 0xff;
- return (int) (ret & 0xff00) >> 8;
- @@ -254,7 +267,9 @@
- {
- unsigned long ret;
- unsigned long bx = (bus << 8) | device_fn;
- + unsigned long flags;
-
- + save_flags (flags);
- __asm__("lcall (%%esi)\n\t"
- "jc 1f\n\t"
- "xor %%ah, %%ah\n"
- @@ -273,7 +288,9 @@
- {
- unsigned long ret;
- unsigned long bx = (bus << 8) | device_fn;
- + unsigned long flags;
-
- + save_flags(flags);
- __asm__("lcall (%%esi)\n\t"
- "jc 1f\n\t"
- "xor %%ah, %%ah\n"
- @@ -292,7 +309,9 @@
- {
- unsigned long ret;
- unsigned long bx = (bus << 8) | device_fn;
- + unsigned long flags;
-
- + save_flags(flags);
- __asm__("lcall (%%esi)\n\t"
- "jc 1f\n\t"
- "xor %%ah, %%ah\n"
- @@ -303,6 +322,7 @@
- "b" (bx),
- "D" ((long) where),
- "S" (&pci_indirect));
- + restore_flags(flags);
- return (int) (ret & 0xff00) >> 8;
- }
-
- @@ -311,7 +331,9 @@
- {
- unsigned long ret;
- unsigned long bx = (bus << 8) | device_fn;
- + unsigned long flags;
-
- + save_flags(flags);
- __asm__("lcall (%%esi)\n\t"
- "jc 1f\n\t"
- "xor %%ah, %%ah\n"
- @@ -322,6 +344,7 @@
- "b" (bx),
- "D" ((long) where),
- "S" (&pci_indirect));
- + restore_flags(flags);
- return (int) (ret & 0xff00) >> 8;
- }
-
- @@ -330,7 +353,9 @@
- {
- unsigned long ret;
- unsigned long bx = (bus << 8) | device_fn;
- + unsigned long flags;
-
- + save_flags(flags);
- __asm__("lcall (%%esi)\n\t"
- "jc 1f\n\t"
- "xor %%ah, %%ah\n"
- @@ -341,6 +366,7 @@
- "b" (bx),
- "D" ((long) where),
- "S" (&pci_indirect));
- + restore_flags(flags);
- return (int) (ret & 0xff00) >> 8;
- }
-
- @@ -349,7 +375,9 @@
- {
- unsigned long ret;
- unsigned long bx = (bus << 8) | device_fn;
- + unsigned long flags;
-
- + save_flags(flags);
- __asm__("lcall (%%esi)\n\t"
- "jc 1f\n\t"
- "xor %%ah, %%ah\n"
- @@ -360,6 +388,7 @@
- "b" (bx),
- "D" ((long) where),
- "S" (&pci_indirect));
- + restore_flags(flags);
- return (int) (ret & 0xff00) >> 8;
- }
-
- Section 4.3 : Adaptec 152x, 151x, 1505, 282x, Sound Blaster 16 SCSI, SCSI Pro,
- Gigabyte, and other AIC 6260/6360 based products (Standard)
- Supported Configurations :
- BIOS addresses : 0xd8000, 0xdc000, 0xd0000, 0xd4000, 0xc8000, 0xcc000, 0xe0000,
- 0xe4000.
- Ports : 0x140, 0x340
- IRQs : 9, 10, 11, 12
- DMA is not used
- IO : port mapped
-
- Autoprobe :
-
- Works with many boards with an installed BIOS. All
- other boards, including the Adaptec 1510, and Sound Blaster16 SCSI
- must use a kernel command line or compile time override.
-
- Autoprobe Override :
- Compile time :
- Define PORTBASE, IRQ, SCSI_ID, RECONNECT, PARITY as appropriate, see Defines
-
- kernel command line : aha152x=<PORTBASE>[,<IRQ>[,<SCSI-ID>[,<RECONNECT>[,<PARITY>]]]]
-
- SCSI-ID is the SCSI ID of the HOST adapter, not of any devices you have installed
- on it. Usually, this should be 7.
-
- To force detection at 0x340, IRQ 11, at SCSI-ID 7, allowing
- disconnect/reconnect, you would use the following command line
- option :
-
- aha152x=0x340,11,7,1
-
- Antiquity Problems, fix by upgrading :
- 1. The driver fails with VLB boards. There was a timing problem
- in kernels older than revision 1.0.5.
-
- Defines :
- AUTOCONF : use configuration the controller reports (only 152x)
- IRQ : override interrupt channel (9,10,11 or 12) (default 11)
- SCSI_ID : override SCSI ID of AIC-6260 (0-7) (default 7)
- RECONNECT : override target disconnect/reselect (set to non-zero to
- allow, zero to disable)
- DONT_SNARF : Don't register ports (pl12 and below)
- SKIP_BIOSTEST : Don't test for BIOS signature (AHA-1510 or disabled BIOS)
- PORTBASE : Force port base. Don't try to probe
-
- Section 4.4 : Adaptec 154x, AMI FastDisk VLB, DTC 329x (Standard)
- Supported Configurations :
- Ports : 0x330 and 0x334
- IRQs : 9, 10, 11, 12, 14, 15
- DMA channels : 5, 6, 7
- IO : port mapped, bus master
-
- Autoprobe : will detect boards at 0x330 and 0x334 only.
-
- Autoprobe override :
- aha1542=<PORTBASE>[,<BUSON>,<BUSOFF>[,<DMASPEED>]]
-
- Note: No-suffix boards, and early 'A' suffix boards do not support
- scatter/gather, and thus don't work. However, they can be made to
- work for some definition of the word works if AHA1542_SCATTER is
- changed to 0 in drivers/scsi/aha1542.h.
-
- Note: BusLogic makes a series of boards that are software compatible with
- the Adaptec 1542, and these come in ISA, VLB, EISA, and PCI flavors.
-
- Antiquity Problems, fix by upgrading :
-
- 1. Linux kernel revisions prior to .99.10 don't support the 'C'
- revision.
-
- 2. Linux kernel revisions prior to .99.14k don't support the 'C'
- revision options for
-
- - BIOS support for the extended mapping for disks > 1G
-
- - BIOS support for > 2 drives
-
- - BIOS support for autoscanning the SCSI bus
-
- 3. Linux kernel revisions prior to .99.15e don't support the 'C'
- with the BIOS support for > 2 drives turned on and the
- BIOS support for the extended mapping for disks > 1G turned off.
-
- 4. Linux kernel revisions prior to .99.14u don't support the 'CF'
- revisions of the board.
-
- 5. Linux kernel revisions prior to 1.0.5 have a race condition
- when multiple devices are accessed at the same time.
-
- Common problems :
-
- 1. There are unexpected errors with a 154xC or 154xCF board,
-
- Early examples of the 154xC boards have a high slew rate on
- one of the SCSI signals, which results in signal reflections
- when cables with the wrong impedance are used.
-
- Newer boards aren't much better, and also suffer from extreme
- cabling and termination sensitivity.
-
- See also Common Problems #2 and #3 and Section 1 : Common Problems,
- Subsection 1.1 : General Flakiness
-
- 2. There are unexpected errors with a 154xC or 154x with
- both internal and external devices connected.
-
- This is probably a termination problem. In order to
- use the software option to disable host adapter termination,
- you must turn switch 1 off.
-
- See also Common Problems #1 and #3 and Section 1 : Common Problems,
- Subsection 1.1 : General Flakiness
-
- 3. The SCSI subsystem locks up completely.
-
- There are cases where the lockups seem to occur when multiple devices
- are in use at the same time. In this case, you can try contacting
- the manufacturer of the devices and see if firmware upgrades are
- available which would correct the problem. As a last resort, you
- can go into aha1542.h and change AHA1542_MAILBOX to 1. This will
- effectively limit you to one outstanding command on the scsi bus at
- one time, and may help the situation. If you have tape drives or
- slow cdrom drives on the bus, this might not be a practical solution.
-
- See also Common Problems #1 and #2 and
- Section 1.1 : Common Problems : General Flakiness
- Section 1.8 : Common Problems : SCSI Lockups
-
- 4. An "Interrupt received, but no mail" message is printed on bootup
- and your SCSI devices are not detected.
-
- Disable the BIOS options to support the extended mapping for
- disks > 1G, support for > 2 drives, and for autoscanning the
- bus. Or, upgrade to Linux .99.14k or newer.
-
- 5. If infinite timeout errors occur on 'C' revision boards, you may need
- to go into the Adaptec setup program and enable synchronous
- negotiation.
-
- 6. Linux 1.2.x gives the message
-
- Unable to determine Adaptec DMA priority. Disabling board.
-
- This is due to a conflict on some systems with the obsolete BusLogic
- driver. Either rebuild your kernel without it, or give the
- BusLogic driver a command line option telling it to look
- somewhere other than where your controller is configured. Ie,
- if you have an Adaptec board at port 0x334, and nothing at
- 0x330, use a command line option like
-
- buslogic=0x330
-
- 8. The system locks up with simultaneous access to multiple devices on
- a 1542C or 1540C and disconnection enabled
-
- Some Adaptec firmware revisions have bugs. Upgrading to
- BIOS v2.11 purportedly fixes these problems.
-
- Section 4.5 : Adaptec 174x
- Supported Configurations :
- Slots : 1-8
- Ports : EISA board, not applicable
- IRQs : 9, 10, 11, 12, 14, 15
- DMA Channels : EISA board, not applicable
- IO : port mapped, bus master
-
- Autoprobe : works with all supported configurations
-
- Autoprobe override : none
-
- Note: This board has been discontinued by Adaptec.
-
- Common Problems :
- 1. If the Adaptec 1740 driver prints the message
- "aha1740: Board detected, but EBCNTRL = %x, so disabled it."
-
- your board was disabled because it was not running in enhanced
- mode. Boards running in standard 1542 mode are not supported.
-
- Section 4.6 : Adaptec 274x, 284x (Standard) 294x (ALPHA)
- A newer version which also supports the Adaptec 294x boards
- is available at
-
- ftp://ftp.ims.com/pub/Linux/aic7xxx
-
- Supported Configurations
- 274x 284x 294x
- EISA Slots : 1-12 N/A N/A
- Ports : N/A ALL ALL
- IRQs : ALL ALL ALL
- DMA Channels : N/A ALL N/A
-
- IO : port mapped, bus master
-
- Autoprobe Override :
- kernel command line : aha274x=extended
- (to force extended mapping)
-
- Notes:
- 1. BIOS MUST be enabled
- 2. The B channel on 2742AT boards is ignored.
- 3. CONFIG_PCI must be set if you are using a PCI board.
-
-
- Section 4.7 : Allways IN2000 (STANDARD)
- Ports : 0x100, 0x110, 0x200, 0x220
- IRQs : 10, 11, 14, 15
- DMA is not used
- IO : port mapped
-
- Autoprobe : BIOS not required
-
- Autoprobe override : none
-
- Common Problems :
-
- 1. There are known problems in systems with IDE drives and with
- swapping.
-
-
- Section 4.8 : BusLogic MultiMaster Host Adapters
-
- (this section Copyright 1995 by Leonard N. Zubkoff <lnz@dandelion.com>)
- (see README.BusLogic for more complete BusLogic driver documentation)
-
- BusLogic MultiMaster SCSI Driver for Linux
-
- Version 1.2.2 for Linux 1.2.13
- Version 1.3.2 for Linux 1.3.88
-
- ftp://ftp.dandelion.com/BusLogic-1.2.2.tar.gz
- ftp://ftp.dandelion.com/BusLogic-1.3.2.tar.gz
-
- 16 April 1996
-
- Leonard N. Zubkoff
- Dandelion Digital
- lnz@dandelion.com
-
- BusLogic, Inc. designs and manufactures a variety of high performance SCSI host
- adapters which share a common programming interface across a diverse collection
- of bus architectures by virtue of their MultiMaster ASIC technology. This
- driver supports all present BusLogic MultiMaster Host Adapters, and should
- support any future MultiMaster designs with little or no modification. Host
- adapters based on the new FlashPoint architecture are not supported by this
- driver; consult the README.FlashPoint file for information about a program to
- upgrade Linux users from the unsupported FlashPoint LT to the supported BT-948.
-
- My primary goals in writing this completely new BusLogic driver for Linux are
- to achieve the full performance that BusLogic SCSI Host Adapters and modern
- SCSI peripherals are capable of, and to provide a highly robust driver that can
- be depended upon for high performance mission critical applications. All of
- the major performance and error recovery features can be configured from the
- Linux kernel command line, allowing individual installations to tune driver
- performance and error recovery to their particular needs.
-
- BusLogic has been an excellent company to work with and I highly recommend
- their products to the Linux community. In November 1995, I was offered the
- opportunity to become a beta test site for their latest MultiMaster product,
- the BT-948 PCI Ultra SCSI Host Adapter, and then again for the BT-958 PCI Wide
- Ultra SCSI Host Adapter in January 1996. This was mutually beneficial since
- BusLogic received a degree and kind of testing that their own testing group
- cannot readily achieve, and the Linux community has available high performance
- host adapters that have been well tested with Linux even before being brought
- to market. This relationship has also given me the opportunity to interact
- directly with their technical staff, to understand more about the internal
- workings of their products, and in turn to educate them about the needs and
- potential of the Linux community. Their interest and support is greatly
- appreciated.
-
- Unlike some other vendors, if you contact BusLogic Technical Support with a
- problem and are running Linux, they will not tell you that your use of their
- products is unsupported. Their latest product marketing literature even states
- "BusLogic SCSI host adapters are compatible with all major operating systems
- including: ... Linux ...".
-
- BusLogic, Inc. is located at 4151 Burton Drive, Santa Clara, California, 95054,
- USA and can be reached by Voice at 408/492-9090 or by FAX at 408/492-1542.
- BusLogic maintains a World Wide Web site at http://www.buslogic.com, an
- anonymous FTP site at ftp.buslogic.com, and a BBS at 408/492-1984. BusLogic
- Technical Support can be reached by electronic mail at techsup@buslogic.com, by
- Voice at 408/654-0760, or by FAX at 408/492-1542. Contact information for
- offices in Europe and Japan is available on the Web site.
-
- SUPPORTED HOST ADAPTERS
-
- The following list comprises the supported BusLogic SCSI Host Adapters as of
- the date of this document. It is recommended that anyone purchasing a BusLogic
- Host Adapter not in the following table contact the author beforehand to verify
- that it is or will be supported.
-
- "W" Series Host Adapters:
-
- BT-948 PCI Ultra Fast Single-ended SCSI-2
- BT-958 PCI Ultra Wide Single-ended SCSI-2
- BT-958D PCI Ultra Wide Differential SCSI-2
-
- "C" Series Host Adapters:
-
- BT-946C PCI Fast Single-ended SCSI-2
- BT-956C PCI Fast Wide Single-ended SCSI-2
- BT-956CD PCI Fast Wide Differential SCSI-2
- BT-445C VLB Fast Single-ended SCSI-2
- BT-747C EISA Fast Single-ended SCSI-2
- BT-757C EISA Fast Wide Single-ended SCSI-2
- BT-757CD EISA Fast Wide Differential SCSI-2
- BT-545C ISA Fast Single-ended SCSI-2
- BT-540CF ISA Fast Single-ended SCSI-2
-
- "S" Series Host Adapters:
-
- BT-445S VLB Fast Single-ended SCSI-2
- BT-747S EISA Fast Single-ended SCSI-2
- BT-747D EISA Fast Differential SCSI-2
- BT-757S EISA Fast Wide Single-ended SCSI-2
- BT-757D EISA Fast Wide Differential SCSI-2
- BT-545S ISA Fast Single-ended SCSI-2
- BT-542D ISA Fast Differential SCSI-2
- BT-742A EISA Single-ended SCSI-2 (742A revision H)
- BT-542B ISA Single-ended SCSI-2 (542B revision H)
-
- "A" Series Host Adapters:
-
- BT-742A EISA Single-ended SCSI-2 (742A revisions A - G)
- BT-542B ISA Single-ended SCSI-2 (542B revisions A - G)
-
- AMI FastDisk Host Adapters that are true BusLogic clones are supported by this
- driver.
-
- BT-948/958/958D INSTALLATION NOTES
-
- The BT-948/958/958D PCI Ultra SCSI Host Adapters have some features which may
- require attention in some circumstances when installing Linux.
-
- o PCI I/O Port Assignments
-
- When configured to factory default settings, the BT-948/958/958D will only
- recognize the PCI I/O port assignments made by the motherboard's PCI BIOS.
- The BT-948/958/958D will not respond to any of the ISA compatible I/O ports
- that previous BusLogic SCSI Host Adapters respond to. This driver supports
- the PCI I/O port assignments, so this is the preferred configuration.
- However, if the obsolete BusLogic driver must be used for any reason, such as
- a Linux distribution that does not yet use this driver in its boot kernel,
- BusLogic has provided an AutoSCSI configuration option to enable a legacy ISA
- compatible I/O port.
-
- To enable this backward compatibility option, invoke the AutoSCSI utility via
- Ctrl-B at system startup and select "Adapter Configuration", "View/Modify
- Configuration", and then change the "ISA Compatible Port" setting from
- "Disable" to "Primary" or "Alternate". Once this driver has been installed,
- the "ISA Compatible Port" option should be set back to "Disable" to avoid
- possible future I/O port conflicts. The older BT-946C/956C/956CD also have
- this configuration option, but the factory default setting is "Primary".
-
- o PCI Slot Scanning Order
-
- In systems with multiple BusLogic PCI Host Adapters, the order in which the
- PCI slots are scanned may appear reversed with the BT-948/958/958D as
- compared to the BT-946C/956C/956CD. For booting from a SCSI disk to work
- correctly, it is necessary that the host adapter's BIOS and the kernel agree
- on which disk is the boot device, which requires that they recognize the PCI
- host adapters in the same order. The motherboard's PCI BIOS provides a
- standard way of enumerating the PCI host adapters, which is used by the Linux
- kernel. Some PCI BIOS implementations enumerate the PCI slots in order of
- increasing bus number and device number, while others do so in the opposite
- direction.
-
- Unfortunately, Microsoft decided that Windows 95 would always enumerate the
- PCI slots in order of increasing bus number and device number regardless of
- the PCI BIOS enumeration, and requires that their scheme be supported by the
- host adapter's BIOS to receive Windows 95 certification. Therefore, the
- factory default settings of the BT-948/958/958D enumerate the host adapters
- by increasing bus number and device number. To disable this feature, invoke
- the AutoSCSI utility via Ctrl-B at system startup and select "Adapter
- Configuration", "View/Modify Configuration", press Ctrl-F10, and then change
- the "Use Bus And Device # For PCI Scanning Seq." option to OFF.
-
- This driver will interrogate the setting of the PCI Scanning Sequence option
- so as to recognize the host adapters in the same order as they are enumerated
- by the host adapter's BIOS.
-
- BUSLOGIC ANNOUNCEMENTS MAILING LIST
-
- The BusLogic Announcements Mailing List provides a forum for informing Linux
- users of new driver releases and other announcements regarding Linux support
- for BusLogic SCSI Host Adapters. To join the mailing list, send a message to
- "BusLogic-announce-request@dandelion.com" with the line "subscribe" in the
- message body.
-
-
- Section 4.9 : BusLogic FlashPoint Host Adapters
- (this section Copyright 1995 by Leonard N. Zubkoff <lnz@dandelion.com>)
-
- There are no Linux drivers for the FlashPoint LT/DL/LW (BT-930/932/950)
- available and it is not clear when or if there will be any. The FlashPoint
- boards have a different architecture from the MultiMaster boards and have no
- onboard CPU, only a SCSI sequencer engine. They are positioned as a desktop
- workstation product, and are not particularly well suited for a high
- performance multitasking operating system like Linux.
-
- The MultiMaster BT-948/958 have an onboard CPU and the mailbox programming
- interface allows for parallelism and pipelining between the host operating
- system and the host adapter, whereas the FlashPoint boards require frequent
- host CPU intervention. As interrupt latencies rise in a loaded multitasking
- system, the BT-948/958 should maintain excellent performance whereas the
- FlashPoint's performance will likely drop quite rapidly. Furthermore, the
- firmware on the BT-948/958 contains the low level knowledge for proper
- interaction with the SCSI bus, whereas with a sequencer engine the Linux driver
- must contain some or all of this information, and it often takes quite a long
- time to get all the kinks worked out. Given the relatively small difference in
- the street price of these products, the BT-948 or BT-958 is clearly the better
- choice for Linux.
-
- <begin quotation>
-
- ANNOUNCEMENT
- BusLogic FlashPoint/BT-948 Upgrade Program
- 1 February 1996
-
- Ever since its introduction last October, the BusLogic FlashPoint LT has
- been problematic for members of the Linux community, in that no Linux
- drivers have been available for this new Ultra SCSI product. Despite it's
- officially being positioned as a desktop workstation product, and not being
- particularly well suited for a high performance multitasking operating
- system like Linux, the FlashPoint LT has been touted by computer system
- vendors as the latest thing, and has been sold even on many of their high
- end systems, to the exclusion of the older MultiMaster products. This has
- caused grief for many people who inadvertently purchased a system expecting
- that all BusLogic SCSI Host Adapters were supported by Linux, only to
- discover that the FlashPoint was not supported and would not be for quite
- some time, if ever.
-
- After this problem was identified, BusLogic contacted its major OEM
- customers to make sure the BT-946C/956C MultiMaster cards would still be
- made available, and that Linux users who mistakenly ordered systems with
- the FlashPoint would be able to upgrade to the BT-946C. While this helped
- many purchasers of new systems, it was only a partial solution to the
- overall problem of FlashPoint support for Linux users. It did nothing to
- assist the people who initially purchased a FlashPoint for a supported
- operating system and then later decided to run Linux, or those who had
- ended up with a FlashPoint LT, believing it was supported, and were unable
- to return it.
-
- In the middle of December, I asked to meet with BusLogic's senior
- management to discuss the issues related to Linux and free software support
- for the FlashPoint. Rumors of varying accuracy had been circulating
- publicly about BusLogic's attitude toward the Linux community, and I felt
- it was best that these issues be addressed directly. I sent an email
- message after 11pm one evening, and the meeting took place the next
- afternoon. Unfortunately, corporate wheels sometimes grind slowly,
- especially when a company is being acquired, and so it's taken until now
- before the details were completely determined and a public statement could
- be made.
-
- BusLogic is not prepared at this time to release the information necessary
- for third parties to write drivers for the FlashPoint. The only existing
- FlashPoint drivers have been written directly by BusLogic Engineering, and
- there is no FlashPoint documentation sufficiently detailed to allow outside
- developers to write a driver without substantial assistance. While there
- are people at BusLogic who would rather not release the details of the
- FlashPoint architecture at all, that debate has not yet been settled either
- way. In any event, even if documentation were available today it would
- take quite a while for a usable driver to be written, especially since I'm
- not convinced that the effort required would be worthwhile.
-
- However, BusLogic does remain committed to providing a high performance
- SCSI solution for the Linux community, and does not want to see anyone left
- unable to run Linux because they have a Flashpoint LT. Therefore, BusLogic
- has put in place a direct upgrade program to allow any Linux user worldwide
- to trade in their FlashPoint LT for the new BT-948 MultiMaster PCI Ultra
- SCSI Host Adapter. The BT-948 is the Ultra SCSI successor to the BT-946C
- and has all the best features of both the BT-946C and FlashPoint LT,
- including smart termination and a flash PROM for easy firmware updates, and
- is of course compatible with the present Linux driver. The price for this
- upgrade has been set at US $45, and the upgrade program will be
- administered through BusLogic Technical Support, which can be reached by
- electronic mail at techsup@BusLogic.com, by Voice at +1 408 654-0760, or by
- FAX at +1 408 492-1542.
-
- I was a beta test site for the BT-948 and versions 1.2.1 and 1.3.1 of my
- BusLogic driver already include latent support for the BT-948. Additional
- cosmetic support for the Ultra SCSI MultiMaster cards will be added in a
- subsequent release. As a result of this cooperative testing process,
- several firmware bugs were found and corrected (make sure you have firmware
- version 5.05R or later). My heavily loaded Linux test system provided an
- ideal environment for testing error recovery processes that are much more
- rarely exercised in production systems, but are crucial to overall system
- stability. It was especially convenient being able to work directly with
- their firmware engineer in demonstrating the problems under control of the
- firmware debugging environment; things sure have come a long way since the
- last time I worked on firmware for an embedded system. I am presently
- working on some performance testing and expect to have some data to report
- in the not too distant future.
-
- BusLogic asked me to send this announcement since a large percentage of the
- questions regarding support for the FlashPoint have either been sent to me
- directly via email, or have appeared in the Linux newsgroups in which I
- participate. To summarize, BusLogic is offering Linux users an upgrade
- from the unsupported FlashPoint LT (BT-930) to the supported BT-948 for US
- $45. Contact BusLogic Technical Support at techsup@BusLogic.com or +1 408
- 654-0760 to take advantage of their offer.
-
- Leonard N. Zubkoff
- lnz@dandelion.com
-
- <end quotation>
-
-
- Section 4.10 : EATA: DPT SmartCache, SmartCache Plus, SmartCache III,
- SmartCache IV and SmartRAID (Standard)
- Supported boards: all, that support the EATA-DMA protocol.
-
- Among them are:
-
- DPT Smartcache (Plus) family:
- PM2011 ISA Fast Single-ended SCSI-2
- PM2012B EISA Fast Single-ended SCSI-2
-
- DPT Smartcache III family:
- PM2021 ISA Fast Single-ended SCSI-2
- PM2021W ISA Wide Single-ended SCSI-2
- PM2022 EISA Fast Single-ended SCSI-2
- PM2022W EISA Wide Single-ended SCSI-2
- PM2024 PCI Fast Single-ended SCSI-2
- PM2024W PCI Wide Single-ended SCSI-2
- PM2122 EISA Fast Single-ended SCSI-2
- PM2122W EISA Wide Single-ended SCSI-2
- PM2124 PCI Fast Single-ended SCSI-2
- PM2124W PCI Wide Single-ended SCSI-2
- PM2322 EISA Fast Single-ended SCSI-2
- PM2322W EISA Wide Single-ended SCSI-2
-
- DPT Smartcache VI family:
- PM2041W ISA Wide Single-ended SCSI-2
- PM2041UW ISA Ultra Wide Single-ended SCSI-2
- PM2042W EISA Wide Single-ended SCSI-2
- PM2042UW EISA Ultra Wide Single-ended SCSI-2
- PM2044W PCI Wide Single-ended SCSI-2
- PM2044UW PCI Ultra Wide Single-ended SCSI-2
- PM2142W EISA Wide Single-ended SCSI-2
- PM2142UW EISA Ultra Wide Single-ended SCSI-2
- PM2144W PCI Wide Single-ended SCSI-2
- PM2144UW PCI Ultra Wide Single-ended SCSI-2
- PM2322W EISA Wide Single-ended SCSI-2
- PM2322UW EISA Ultra Wide Single-ended SCSI-2
-
- DPT SmartRAID family:
- PM3021 ISA Fast Single-ended SCSI-2
- PM3021W ISA Wide Single-ended SCSI-2
- PM3122 EISA Fast Single-ended SCSI-2
- PM3122W EISA Wide Single-ended SCSI-2
- PM3222 EISA Fast Single-ended SCSI-2
- PM3222W EISA Wide Single-ended SCSI-2
- PM3224 PCI Fast Single-ended SCSI-2
- PM3224W PCI Wide Single-ended SCSI-2
- PM3334W PCI Wide Single-ended SCSI-2
- PM3334UW PCI Ultra Wide Single-ended SCSI-2
-
- also the differential versions of the above controllers.
-
- and some controllers from:
- NEC, AT&T, SNI, AST, Olivetti, Alphatronix.
-
- Supported Configurations :
- Slots : ALL
- Ports : ALL
- IRQs : ALL level & edge triggered
- DMA Channels : ISA ALL, EISA/PCI not applicable
- IO : port mapped, bus master
- SCSI Channels: ALL
- Autoprobe : works with all supported configurations
-
- The latest version of the EATA-DMA driver is available on:
- ftp.i-Connect.Net:/pub/Local/EATA/
-
- Mailinglist:
- The EATA Mailing List provides a forum to Linux users of the EATA-DMA and
- EATA-PIO driver for discussions and announcements of new releases and other
- announcements.
- To join the mailing list, send a message to "linux-eata-request@i-connect.net"
- with the line "subscribe" in the message body.
-
- /proc/scsi support:
- To get advanced command statistics, do the following:
- echo "eata_dma latency" >/proc/scsi/eata_dma/<driver_no>
- and to switch it off again:
- echo "eata_dma nolatency" >/proc/scsi/eata_dma/<driver_no>
-
- Common Problems :
- 1. Slackware doesn't find the controller.
- Solution: Use one of the ascsi* bootdisks.
-
- 2. The IDE driver can detect the ST-506 interface of the EATA board in old
- kernels (<v1.3).
- 2.1 This will look like similar to one of the following 2 examples:
-
- hd.c: ST-506 interface disk with more than 16 heads detected,
- probably due to non-standard sector translation. Giving up.
- (disk %d: cyl=%d, sect=63, head=64)
-
- hdc: probing with STATUS instead of ALTSTATUS
- hdc: MP0242 A, 0MB w/128KB Cache, CHS=0/0/0
- hdc: cannot handle disk with 0 physical heads
- hdd: probing with STATUS instead of ALTSTATUS
- hdd: MP0242 A, 0MB w/128KB Cache, CHS=0/0/0
- hdd: cannot handle disk with 0 physical heads
-
- If the IDE driver gets into trouble because of this, ie. you can't
- access your (real) IDE hardware, change the IO Port and/or the IRQ of
- the EATA board.
- 2.2 If the IDE driver finds hardware it can handle ie. harddisks with
- a capacity <=504MB, it will allocate the IO Port and IRQ, so that
- the eata driver can't utilize them. In this case also change IO Port
- and IRQ (!= 14,15).
-
- 3. Some old SK2011 boards have a broken firmware. Please contact DPT's
- customer support for an update.
-
- Notes:
- 1. CONFIG_PCI must be set if you are using a PCI board.
-
- Section 4.12 : Future Domain 16x0 with TMC-1800, TMC-18C30, TMC-18C50,
- or TMC-36C70 chip
- Supported Configurations :
- BIOSs : 2.0, 3.0, 3.2, 3.4, 3.5
- BIOS Addresses : 0xc8000, 0xca000, 0xce000, 0xde000
- Ports : 0x140, 0x150, 0x160, 0x170
- IRQs : 3, 5, 10, 11, 12, 14, 15
- DMA is not used
- IO : port mapped
-
- Autoprobe : works with all supported configurations, requires
- installed BIOS
-
- Autoprobe Override : none
-
- Antiquity Problems, fix by upgrading :
-
- 1. Old versions do not support the TMC-18C50 chip, and will fail with
- newer boards.
-
- 2. Old versions will not have the most current BIOS signatures for
- autodetection.
-
- 3. Versions prior to the one included in Linux 1.0.9 and 1.1.6
- don't support the new SCSI chip or 3.4 BIOS.
-
- Notes :
- The Future Domain BIOS often scans for SCSI-devices from highest
- ID to 0, in reverse order of other SCSI BIOSes. sda will be the last
- "drive letter" (ie, D: rather than C:). You may also need to use a
- a disktab override for LILO.
-
- Section 4.12 : Generic NCR5380 / T130B
- Supported and Unsupported Configurations :
- Ports : all
- IRQs : all
- DMA channels - DMA is not used
- IO : port mapped
-
- Autoprobe : none
-
- Autoprobe Override :
- Compile time : Define GENERIC_NCR5380_OVERRIDE to be an array of tupples
- with port, irq, dma, board type - ie
- #define GENERIC_NCR5380_OVERRIDE {{0x330, 5, DMA_NONE, BOARD_NCR5380}}
-
- for a NCR5380 board at port 330, IRQ 5.
-
- #define GENERIC_NCR5380_OVERRIDE {{0x350, 5, DMA_NONE, BOARD_NCR53C400}}
-
- for a T130B at port 0x350.
-
- Older versions of the code eliminate the BOARD_* entry.
-
- The symbolic IRQs IRQ_NONE and IRQ_AUTO may be used.
-
- kernel command line : ncr5380=port,irq
- ncr5380=port,irq,dma
- ncr53c400=port,irq
-
- 255 may be used for no irq, 254 for irq autoprobe.
-
- Common Problems :
-
- 1. Using the T130B board with the old (pre public release 6) generic
- NCR5380 driver which doesn't support the ncr53c400 command
- line option.
-
- The NCR5380 compatable registers are offset eight from
- the base address. So, if your address is 0x350, use
-
- ncr5380=0x358,254
-
- on the kernel command line.
-
- Antiquity problems, fix by upgrading :
- 1. The kernel locks up during disk access with T130B or other
- NCR53c400 boards
-
- Pre-public release 6 versions of the Generic NCR5380
- driver didn't support interrupts on these boards.
- Upgrade.
-
-
- Notes : the generic driver doesn't support DMA yet, and pseudo-DMA
- isn't supported in the generic driver.
-
- Section 4.14 : NCR53c8xx (Standard)
-
- Supported and Unsupported Configurations :
- Base addresses : ALL
- IRQs : ALL
- DMA channels : PCI, not applicable
- IO : port mapped, busmastering
-
- Autoprobe : requires PCI BIOS, uses PCI BIOS routines to
- search for devices and read configuration space
-
- The driver uses the pre-programmed values in some registers for
- initialization, so a BIOS must be installed.
-
- Antiquity Problems, fix by upgrading :
-
- 1. Older versions of Linux had a problem with swapping
- See Section 5.2.7 : Disks : System Hangs When Swapping
-
- 2. Older versions of Linux didn't recognize '815 and '825
- boards.
-
- 3. Distribution kernels include release 4 or 5 of the driver, which does
- not support useful things like disconnect/reconnect (the most noticeable
- effect of this being attempts to retension/rewind/file space a tape
- lock you out of all SCSI devices), multiple host adapters, and
- BIOSless operation.
-
- The latest release of the driver is available at
-
- ftp://tsx-11.mit.edu/pub/linux/ALPHA/scsi/ncr53c810
-
- Currently, this is a 1.2.10 and newer patch, although the next
- release will be 1.3.x exclusively. These patches are NOT
- entirely clean due to some ELF and other patches which were
- in the baseline revision of my source tree, and if you
- can't manually correct the (four) problems you should get,
- you shouldn't use them. Note that only the newest patch is
- needed; these are not incremental.
-
- If you wish to run the newer NCR driver with a 1.3.x kernel
- before then, Harald Evensen <Harald.Evensen@pvv.unit.no> has
- adapted the patches for 1.3.x
-
- ftp://ftp.pvv.unit.no/pub/Linux/ALPHA/ncr
-
- These patches should be clean.
-
- Please see all of the READMEs in these directories. You should
- also join the NCR mailing list if you are interested in running
- the ALPHA code, since interim bug fixes and announcements of the
- next release are posted to this list.
-
- To subscribe, send mail to majordomo@colorado.edu with
-
- subscribe ncr53c810
-
- in the text. You can unsubscribe by sending mail to the same address
- and including
-
- unsubscribe ncr53c810
-
- in the text.
-
- Common Problems :
-
- 1. Many people have encountered problems where the chip worked
- fine under DOS, but failed under Linux with a timeout on
- test 1 due to a lost interrupt.
-
- This is often due to a mismatch between the IRQ hardware
- jumper for a slot or mainboard device and the value set
- in the CMOS setup. DOUBLE CHECK
- - The IRQ you are using is used only by your onboard NCR chip,
- or the slot an NCR board is installed in
- - Any main board jumpers selecting the IRQ for the onboard
- chip or slot match your CMOS setup.a
- - Some PCI mainboards have an "auto" assignment
- feature, which will not work.
-
- It may also be due to PCI INTB, INTC, or INTD being selected
- on a PCI board in a system which only supports PCI INTA. If you
- are using an NCR board which has jumpers to select between PCI
- interrupt lines, make sure you are using INTA.
-
- Finally, PCI should be using level-sensitive rather
- than edge triggered interrupts. Check that your board
- is jumpered for level-sensitive, and if that fails
- try edge-triggered because your system may be
- broken.
-
- This problem is especially common with Viglen some Viglen
- motherboards, where the mainboard IRQ jumper settings are
- NOT as documented in the manual. I've been told that what
- claims to be IRQ5 is really IRQ9, your mileage will vary.
-
- 2. Lockups / other problems occur when using an S3 928, or Tseng
- ET4000W32 PCI video board.
-
- There are hardware bugs in at least some revisions of these
- chips. Don't use them.
-
- 3. You get a message on boot up indicating that the I/O mapping
- was disabled because base address 0 bits 0..1 indicated a
- non I/O mapping
-
- This is due to a BIOS bug in some machines which results in
- dword reads of configuration regsisters returning the
- high and low 16 bit words swapped.
-
- 4. Some systems have problems if PCI write posting, or CPU->
- PCI buffering are enabled. If you have problems,
- disable these options.
-
- 5. Some systems with the NCR SDMS software in an onboard BIOS
-
- ROM and in the system BIOS are unable to boot DOS.
- Disabling the image in one place should rectify this
- problem.
-
- 6. If you encounter the message
-
- "scsi%d: IRQ0 not free, detaching"
-
- or
-
- "scsi%d: IRQ255 not free, detaching"
-
- The NCR chip had all 0 or 1 bits stored in the PCI configuration
- register. Either you have configuration problems (see Common
- Problem 1), or you have a defective mainboard BIOS.
-
- As a work arround, you could edit drivers/scsi/ncr53c7,8xx.c,
- and change pci_init() so that you have
-
- irq = my_irq;
-
- before
- return normal_init (tpnt, board, chip, (int) base,
- (int) io_port, (int) irq, DMA_NONE, 1, bus, device_fn,
- options);
-
- 7. Some systems have hideous, broken, BIOS chips. Don't
- make any bug reports until you've made sure you have
- the newest ROM from your vendor.
-
- 8. The command line overrides ncr53c810=xxx, etc. don't work.
-
- In stock kernels, this is because their entry points are not included
- in init/main.c, which is quite intentional :
-
- The driver makes no attempt to avoid autoprobing for a board
- where a command line override was used, so if an override
- is used where the board actually showed up to the PCI
- configuration routines, you'll have big problems.
-
- The only reason you would need an override would be if the
- PCI hardware + BIOS were broken, in which case certain error
- recovery routines wouldn't work, rendering the override
- less than useful.
-
- Finally, nearly all of people who _think_ they need a command line
- override do because they get configuration or other error messages
- from the driver. If the driver says you have a configuration
- problem, you have a broken system or a configuration problem
- and no override is going to fix this.
-
- If some one has gone and added the appropriate entry points to
- init/main.c for command line overrides, they are totally unsupported
- and may not work.
-
- 9. Certain NCR boards (most notably Nexstor) which don't use an
- NCR BIOS get timeouts. Some of these ROMs handle synchronous
- and transfers, negotiate for sync. transfers on power up,
- and leave the drives in an unknown state. When the distribution
- Linux NCR driver attempts to talk with them, it gets timeouts
- and cannot recover because it won't do a bus reset or renegotiate.
-
- If you run into this problem, you can either disable
- synchronous transfers in the board's setup program, or
- upgrade to a newer ALPHA release of the NCR driver which
- will do synchronous negotiation.
-
- 10. Tyan S1365 '825 boards have problems with timeouts, especially
- when disconnects are enabled. Some of these boards have the
- documentation regarding the termination enable jumper reversed -
- so that termination is off when you need it, and on when it
- shouldn't be.
-
- Try reversing the position of the jumper.
-
- Notes:
- 1. CONFIG_PCI must be set
-
- Section 4.15 : Seagate ST0x/Future Domain TMC-8xx/TMC-9xx
- Supported and Unsupported Configurations :
- Base addresses : 0xc8000, 0xca000, 0xcc000, 0xce000, 0xdc000, 0xde000
- IRQs : 3, 5
- DMA channels : DMA is not used
- IO : memory mapped
-
- Autoprobe : probes for address only, IRQ is assumed to be 5,
- requires installed BIOS.
-
- Autoprobe Override :
- Compile time : Define OVERRIDE to be the base address, CONTROLLER to
- FD or SEAGATE as appropriate, and IRQ to the IRQ.
-
- kernel command line : st0x=address,irq or tmc8xx=address,irq (only works
- for .99.13b and newer)
-
- Antiquity Problems, fix by upgrading :
-
- 1. Versions prior to the one in the Linux .99.12 kernel had a problem
- handshaking with some slow devices, where
-
- This is what happens when you write data out to the bus
-
- 1. Write byte to data register, data register is asserted to bus
- 2. time_remaining = 12us
- 3. wait while time_remaining > 0 and REQ is not asserted
- 4. if time_remaining > 0, assert ACK
- 5. wait while time remaining > 0 and REQ is asserted
- 6. deassert ACK
-
- The problem was encountered in slow devices that do the command
- processing as they read the command, where the REQ/ACK handshake
- takes over 12us - REQ didn't go false when the driver expected it
- to, so the driver ended up sending multiple bytes of data for
- each REQ pulse.
-
- 2. With Linux .99.12, a bug was introduced when I fixed the arbitration
- code, resulting in failed selections on some systems. This was
- fixed in .99.13.
-
- Common Problems :
-
- 1. There are command timeouts when Linux attempts to read the partition
- table or do other disk access.
-
- The board ships with the defaults set up for MSDOS, ie interrupts
- are disabled. To jumper the board for interrupts, on the Seagate
- use jumper W3 (ST01) or JP3 (ST02) and short pins F-G to select
- IRQ 5.
-
- 2. The driver can't handle some devices, particularly cheap SCSI
- tapes and CDROMs.
-
- The Seagate ties the SCSI bus REQ/ACK handshaking into the PC bus
- IO CHANNEL READY and (optionally) 0WS signals. Unfortunately, it
- doesn't tell you when the watchdog timer runs out, and you have
- no way of knowing for certain that REQ went low, and may end up
- seeing one REQ pulse as multiple REQ pulses.
-
- Dealing with this means using a tight loop to look for REQ to
- go low, with a timeout incase you don't catch the transition due
- to an interrupt, etc. This results in a performance decrease, so it
- would be undesireable to apply this to all SCSI devices. Instead,
- it is selected on a per-device basis with the "borken" field for
- the given SCSI device in the scsi_devices array. If you run into
- problems, you should try adding your device to the list of
- devices for which borken is not reset to zero (currently,
- only the TENEX CDROM drives).
-
- 3. A future domain board (specific examples include the 840,841,
- 880, and 881) doesn't work.
-
- A few of the Future domain boards use the Seagate
- register mapping, and have the MSG and CD bits of the
- status register flipped.
-
- You should edit seagate.h, swapping the definitions for
- STAT_MSG and STAT_CD, and recompile the kernel with
- CONTROLLER defined to SEAGATE and an appropriate
- IRQ and OVERRIDE specified.
-
- 4. When attempting to fdisk your drive, you get error messages
- indicating that the HDIO_REQ or HDIO_GETGEO ioctl failed,
- or
-
- You must set heads sectors and cylinders.
- You can do this from the extra functions menu.
-
-
- See Section 5.4 : Disks : Partitioning
-
- 5. After manually specifying the drive geometry, subsequent
- attempts to read the partition table result in partition
- boundary not on a cylinder boundary, physical and logical
- boundaries don't match, etc. error messages.
-
- See Section 5.4 : Disks : Partitioning
-
-
- 6. Some systems which worked prior to .99.13 fail with newer
- versions of Linux. Older versions of Linux assigned the
- CONTROL and DATA registers in an order different than that
- outlined in the Seagate documentation, which broke on some
- systems. Newer versions make the assignment in the correct
- way, but this breaks other systems.
-
- The code in seagate.c looks like this now :
-
- cli();
- DATA = (unsigned char) ((1 << target) | (controller_type == SEAGATE ? 0x80 : 0x40));
- CONTROL = BASE_CMD | CMD_DRVR_ENABLE | CMD_SEL |
- (reselect ? CMD_ATTN : 0);
- sti();
-
- Changing this to
-
- cli();
- CONTROL = BASE_CMD | CMD_DRVR_ENABLE | CMD_SEL |
- (reselect ? CMD_ATTN : 0);
- DATA = (unsigned char) ((1 << target) | (controller_type == SEAGATE ? 0x80 : 0x40));
- sti()
-
- may fix your problem.
-
- Defines :
-
- FAST or FAST32 will use blind transfers where possible
-
- ARBITRATE will cause the host adapter to arbitrate for the
- bus for better SCSI-II compatability, rather than just
- waiting for BUS FREE and then doing its thing. Should
- let us do one command per Lun when I integrate my
- reorganization changes into the distribution sources.
-
- SLOW_HANDSHAKE will allow compatability with broken devices that don't
- handshake fast enough (ie, some CD ROM's) for the Seagate
- code.
-
- SLOW_RATE=x, x some number will let you specify a default
- transfer rate if handshaking isn't working correctly.
-
- Section 4.16 : PAS16 SCSI
- Supported and Unsupported Configurations :
- Ports : 0x388, 0x384, 0x38x, 0x288
- IRQs : 10, 12, 14, 15
- IMPORTANT : IRQ MUST be different from the IRQ used for the sound
- portion of the board.
- DMA is not used for the SCSI portion of the board
- IO : port mapped
-
- Autoprobe : does not require BIOS
-
- Autoprobe Override :
- Compile time : Define PAS16_OVERRIDE to be an array of port, irq
- tupples. Ie
-
- #define PAS16_OVERRIDE {{0x388, 10}}
-
- for a board at port 0x388, IRQ 10.
-
- kernel command line :
- pas16=port,irq
-
- Defines :
- AUTOSENSE - if defined, REQUEST SENSE will be performed automatically
- for commands that return with a CHECK CONDITION status.
-
- PSEUDO_DMA - enables PSEUDO-DMA hardware, should give a 3-4X performance
- increase compared to polled I/O.
-
- PARITY - enable parity checking. Not supported
-
- SCSI2 - enable support for SCSI-II tagged queueing. Untested
-
-
- UNSAFE - leave interrupts enabled during pseudo-DMA transfers. You
- only really want to use this if you're having a problem with
- dropped characters during high speed communications, and even
- then, you're going to be better off twiddling with transfersize.
-
- USLEEP - enable support for devices that don't disconnect. Untested.
-
-
- Common problems :
-
- 1. Command timeouts, aborts, etc.
-
- You should install the NCR5380 patches that I posted to the net
- some time ago, which should be integrated into some future alpha
- release. These patches fix a race condition in earlier NCR5380
- driver cores, as well as fixing support for multiple devices on
- NCR5380 based boards.
-
- If that fails, you should disable the PSEUDO_DMA option by
- changing the #define PSEUDO_DMA line in drivers/scsi/pas16.c to #undef
- PSEUDO_DMA.
-
- Note that the later should be considered a last resort, because
- there will be a severe performance degradation.
-
-
-
- Section 4.17 : Trantor T128/T128F/T228
- Supported and Unsupported Configurations :
- Base addresses : 0xcc000, 00xc8000, 0xdc000, 0xd8000
- IRQs : none, 3, 5, 7 (all boards)
- 10, 12, 14, 15 (T128F only)
- DMA is not used.
- IO : memory mapped
-
- Autoprobe : works for all supported configurations, requires
- installed BIOS.
-
- Autoprobe Override :
- Compile time : Define T128_OVERRIDE to be an array of address, irq
- tupples. Ie
-
- #define T128_OVERRIDE {{0xcc000, 5}}
-
- for a board at address 0xcc000, IRQ 5.
-
- The symbolic IRQs IRQ_NONE and IRQ_AUTO may be used.
-
- kernel command line : t128=address,irq
-
- -1 may be used for no irq, -2 for irq autoprobe.
-
- Defines :
- AUTOSENSE - if defined, REQUEST SENSE will be performed automatically
- for commands that return with a CHECK CONDITION status.
-
- PSEUDO_DMA - enables PSEUDO-DMA hardware, should give a 3-4X performance
- increase compared to polled I/O.
-
- PARITY - enable parity checking. Not supported
-
- SCSI2 - enable support for SCSI-II tagged queueing. Untested
-
-
- UNSAFE - leave interrupts enabled during pseudo-DMA transfers. You
- only really want to use this if you're having a problem with
- dropped characters during high speed communications, and even
- then, you're going to be better off twiddling with transfersize.
-
- USLEEP - enable support for devices that don't disconnect. Untested.
-
- Common Problems :
- 1. Command timeouts, aborts, etc.
-
- You should install the NCR5380 patches that I posted to the net
- some time ago, which should be integrated into some future alpha
- release. These patches fix a race condition in earlier NCR5380
- driver cores, as well as fixing support for multiple devices on
- NCR5380 based boards.
-
- If that fails, you should disable the PSEUDO_DMA option by
- changing the #define PSEUDO_DMA line in drivers/scsi/pas16.c to #undef
- PSEUDO_DMA.
-
- Note that the later should be considered a last resort, because
- there will be a severe performance degradation.
-
- Section 4.18 : Ultrastor 14f (ISA), 24f (EISA), 34f (VLB)
- Ports : 0x130, 0x140, 0x210, 0x230, 0x240, 0x310, 0x330, 0x340
- IRQs : 10, 11, 14, 15
- DMA channels : 5, 6, 7
- IO : port mapped, bus master
-
- Autoprobe : does not work for boards at port 0x310, BIOS not required.
-
- Autoprobe override : compile time only, define PORT_OVERRIDE
-
- Common Problems :
- 1. The address 0x310 is not supported by the autoprobe code, and may
- cause conflicts if networking is enabled.
-
- Please use a different address.
-
- 2. Using an Ultrastor at address 0x330 may cause the system to hang
- when the sound drivers are autoprobing.
-
- Please use a different address.
-
- 3. Various other drivers do unsafe probes at various addresses, if you
- are having problems with detection or the system is hanging at
- boot time, please try a different address.
-
- 0x340 is recommended as an address that is known to work.
-
- 4. Linux detects no SCSI devices, but detects your SCSI hard disk
- on an Ultrastor SCSI board as a normal hard disk, and the
- hard disk driver refuses to support it. Note that when this
- occurs, you will probably also get a message
-
- hd.c: ST-506 interface disk with more than 16 heads detected,
- probably due to non-standard sector translation. Giving up.
- (disk %d: cyl=%d, sect=63, head=64)
-
- If this is the case, you are running the Ultrastor board in
- WD1003 emulation mode. You have
-
- 1. Switch the ultrastor into native mode. This is the
- recommended action, since the SCSI driver can be
- significantly faster than the IDE driver, especially with
- the clustered read/write patches installed. Some users have
- sustained in excess of 2M/sec through the file system using
- these patches.
-
- Note that this will be necessary if you wish to use any non-
- hard disk, or more than two hard disk devices on the Ultrastor.
-
- 2. Use the kernel command line switch
-
- hd=cylinders,heads,sectors
-
- to override the default setting to bootstrap yourself,
- keeping number of cylinders <= 2048, number of heads <= 16,
- and number of sectors <= 255 such that cylinders * heads * sectors
- is the same for both mappings.
-
- You'll also have to manually specify the disk geometry when
- running fdisk under Linux. Failure to do so will result in
- incorrect partition entries being written, which will work
- correctly with Linux but fail under MSDOS which looks at
- the cylinder/head/sector entries in the table.
-
- Once Linux is up, you can avoid the inconvience of having
- to boot by hand by recompiling the kernel with an appropriately
- defined HD_TYPE macro in include/linux/config.h.
-
- Section 4.19 : Western Digital 7000
- Supported Configurations :
- BIOS Addresses : 0xce000
- Ports : 0x350
- IRQs : 15
- DMA Channels : 6
- IO : port mapped, bus master
-
- Autoprobe : requires installed BIOS
-
- Common Problems :
-
- 1. There are several revisisions of the chip and firmware. Supposedly,
- revision 3 boards do not work, revision 5 boards do,
- chips with no suffix do not work, chips with an 'A' suffix do.
-
- 2. The board supports a few BIOS addresses which aren't on the list
- of supported addresses. If you run into this situation,
- please use one of the supported addresses and submit a bug
- report as outlined in Section 2, "Bug Reports"
-
- Section 4.20 : AM53/79C974 (ALPHA)
- ftp://tsx-11.mit.edu/pub/linux/ALPHA/scsi/AM53C974-0.3.tar.gz
-
- Supported Configurations :
- Ports : all
- IRQs : all
- DMA Channels : 6
- IO : port mapped, bus master (unintelligent)
-
-
-
- Section 5 : Disks
-
- This section gives information that is specific to disk drives.
-
- Section 5.1 : Supported and Unsupported Hardware
-
- All direct access SCSI devices with a block size of 256, 512, or
- 1024 bytes should work. Other block sizes will not work (Note
- that this can often be fixed by changing the block and/or
- sector sizes using the MODE SELECT SCSI command)
-
- Sector size refers to the number of data bytes allocated per sector
- on a device, ie CDROMs use a 2048 byte sector size.
-
- Block size refers to the size of the logical blocks used to interface
- with the device. Although this is usually identical to sector size,
- some devices map multiple smaller physical sectors (ie, 256 bytes
- in the case of 55M Syquest drives) to larger logical blocks or
- vice versa (ie, 512 byte blocks on SUN compatable CDROM drives).
-
- Removeable media devices, including Bernoulis, flopticals, MO drives,
- and Syquests.
-
- In theory, drives up to a terrabyte in size should work. There is
- definately no problem with tiny 9G drives.
-
- Section 5.2 : Common Problems
-
- Section 5.2.1 : Cylinder > 1024 message.
-
- When partitioning, you get a warning message about "cylinder > 1024"
- or you are unable to boot from a partition including a logical
- cylinder past logical cylinder 1024.
-
- This is a BIOS limitation.
-
- See Section 5.4 Disk Geometry and Partitioning for an explanation.
-
- Section 5.2.2 : You are unable to partition "/dev/hd*"
-
- /dev/hd* aren't SCSI devices, /dev/sd* are.
-
- See Section 5.3, Device files, and Section 5.4, Disk
- Geometry and Partitioning
- for the correct device names and partitioning procedure.
-
- Section 5.2.3 : Unable to eject media from a removeable media drive.
-
- Linux attempts to lock the drive door when a piece of
- media is mounted to prevent filesystem corruption due to
- an inadvertant media change.
-
- Please unmount your disks before ejecting them.
-
-
- Section 5.2.4 : Unable to boot using LILO from a SCSI disk
-
- In some cases, the SCSI driver and BIOS will disagree
- over the correct BIOS mapping to use, and will result
- in LILO hanging after 'LI' at boot time and/or
- other problems.
-
- To workarround this, you'll have to determine your BIOS
- geometry mapping used under DOS, and make an entry for
- your disk in /etc/lilo/disktab.
-
- Alternatively, you may be able to use the "linear" configuration
- file option.
-
- Section 5.2.5 : Fdisk responds with
-
- You must set heads sectors and cylinders.
- You can do this from the extra functions menu.
-
- and disk geometry is not 'remembered' when fdisk is rerun.
-
- See Section 5.4 : Partitioning
-
- Section 5.2.6 : Only one drive is detected on a bridge board with
- multiple drives connected.
-
- Linux won't search LUNs past zero on SCSI devices which
- predate ANSI SCSI revision 1. If you wish devices on
- alternate LUNs to be recognized, you will have to modify
- drivers/scsi/scsi.c:scan_scsis().
-
- Section 5.2.7 : System hangs when swapping
-
- We think this has been fixed, try upgrading to 1.1.38.
-
- Section 5.2.8 : Connor CFP1060S disks get corrupted
-
- This is due to a microcode bug in the read-ahead and
- caching code.
-
- From Soenke Behrens of Conner tech. support :
-
- During the past few weeks, we got several calls from customers stating
- that they had severe problems with Conner CFP1060x 1GB SCSI drives
- using the Linux operating system. Symptoms were corrupt filesystems
- (damaged inodes) reported by e2fsck on each system boot and similar
- errors.
-
- There is now a fix available for customers with a CFP1060x (microcode
- revisions 9WA1.62/1.66/1.68) and Linux. To apply the upgrade, you
- will need a DOS boot disk and ASPI drivers that can access the hard
- drive. The upgrade downloads new queuing and lookahead code into the
- non-volatile SCSI RAM of the drive.
-
- If you are experiencing problems with a disk that has microcode
- revision 9WA1.60, you will have to contact your nearest Conner service
- centre to get the disk upgraded. The microcode revision can be found
- on the label of the drive and on the underside of the drive on a label
- on one of the ICs.
-
- If you are confident that you can perform the upgrade yourself, please
- contact Conner Technical Support and have your microcode revision
- ready. Conner Technical Support Europe can be reached on +44-1294-315333,
- Conner Technical Support in the USA can be reached on 1-800-4CONNER.
-
- Regards
- Soenke Behrens
- European Technical Support
-
- Section 5.3 : Device Files
-
- SCSI disks use block device major 8, and there are no "raw" devices
- ala BSD.
-
- 16 minor numbers are allocated to each SCSI disk, with minor % 16 == 0
- being the whole disk, minors 1 <= (minor % 16) <= 4 the four primary
- partitions, minors 5 <= (minor % 16) <= 15 any extended partitions.
-
- Ie, a configuration may work out like this (with one host adapter)
-
- Device Target, Lun SCSI disk
- 84M Seagate 0 0 /dev/sda
- SCSI->SMD bridge disk 0 3 0 /dev/sdb
- SCSI->SMD bridge disk 1 3 1 /dev/sdc
- Wangtek tape 4 0 none
- 213M Maxtor 6 0 /dev/sdd
-
- Etc.
-
- The standard naming convention is
-
- /dev/sd{letter} for the entire disk device ((minor % 16) == 0)
- /dev/sd{letter}{partition} for the partitions on that device
- (1 <= (minor % 16) <= 15)
-
- Ie
-
- /dev/sda block device major 8 minor 0
- /dev/sda1 block device major 8 minor 1
- /dev/sda2 block device major 8 minor 2
- /dev/sdb block device major 8 minor 16
-
- etc.
-
- Section 5.4 : Partitioning
-
- You can partition your SCSI disks using the partitioning program
- of your choice, under DOS, OS/2, Linux or any other operating
- system supporting the standard partitioning scheme.
-
- The correct way to run the Linux fdisk program is by specifying the
- device on the command line. Ie, to partition the first SCSI disk,
-
- fdisk /dev/sda
-
- If you don't explicitly specify the device, the partitioning program
- may default to /dev/hda, which isn't a SCSI disk.
-
- In some cases, fdisk will respond with
-
- You must set heads sectors and cylinders.
- You can do this from the extra functions menu.
-
- Command (m for help):
-
- and/or give a message to the effect that the HDIO_REQ or
- HDIO_GETGEO ioctl failed. In these cases, you must
- manually specify the disk geometry as outlined in Subsection
- 5.5 : Disk Geometry when running fdisk, and also in /etc/disktab
- if you wish to boot kernels off that disk with LILO.
-
- If you have manually specified the disk geometry, subsequent
- attempts to run fdisk will give the same error message. This
- is normal, since PCs don't store the disk geometry information
- in the partition table. In and of itself, will cause _NO PROBLEMS_,
- and you will have no problems accessing partitions you created on
- the drive with Linux. Some vendors' poor installation code will
- choke on this, in which case you should contact your vendor
- and insist that they fix the code.
-
- In some cases, you will get a warning message about a partition ending
- past cylinder 1024. If you create one of these partitions, you will
- be unable to boot Linux kernels off of that partition using LILO. Note,
- however, that this restriction does not preclude the creation of a
- root partition partially or entirely above the 1024 cylinder mark,
- since it is possible to create a small /boot partition below the
- 1024 cylinder mark or to boot kernels off existing partitions.
-
- Section 5.5 : Disk Geometry
-
- Under Linux, each disk is viewed as the SCSI host adapter sees it :
- N blocks, numbered from 0 to N-1, all error free, where as DOS/BIOS
- predate intelligent disks and apply an arbitrary head / cylinder /
- sector mapping to this linear addressing.
-
- This can pose a problem when you partition the drives under Linux,
- since there is no portable way to get DOS/BIOS's idea of the mapped
- geometry. In most cases, a HDIO_GETGEO ioctl() can be implemented
- to return this mapping. Unfortunately, when the vendor (ie Seagate)
- has chosen a perverse, non-standard, and undocumented mapping, this
- is not possible and geometry must be manually specified
-
- If manual specification of the is required, you have one of several
- options :
-
- 1. If you don't care about using DOS, or booting kernels from the
- drive with LILO, create a translation such that heads * cylinders *
- sectors * 512 < size of your drive in bytes (a megabyte is defined
- as 2^20 bytes).
-
-
- 1 <= heads <= 256
- 1 <= cylinders <= 1024
- 1 <= sectors <= 63
-
- 2. Use the BIOS mapping. In some cases, this will mean reconfiguring the
- disk so that it is at SCSI ID 0, and disabling the second IDE drive (if you have one).
-
- You can either use a program like NU, or you can use the following
- program :
-
- begin 664 dparam.com
- MBAZ``##_B+^!`+N!`(H'0SP@=/D\,'5:@#]X=`6`/UAU4(!_`3AU2H!_`P!U
- M1(I7`H#J,(#Z`7<Y@,*`M`C-$PCD=3-14HC()#\PY.@R`.@J`%J(\/[`,.3H
- M)0#H'0!8AL2Q!M+L0.@7`+K"`;0)S2'#NIP!ZR"ZQ0'K&[K5`>L6N]T!,=*Y
- M"@#W\8#",$N(%PG`=>^)VK0)S2'#=7-A9V4Z(&1P87)A;2`P>#@P#0H@("!O
- L<B`@9'!A<F%M(#!X.#$-"B1);G9A;&ED(&1R:79E#0HD("`D```````D``!O
- `
- end
-
- When run it prints the sectors, heads, and cylinders of the
- drive whose BIOS address was specified on the command line (0x80
- is the first disk, 0x81 the second).
-
- Ie, dparam 0x80
- 60 17 1007
-
- Would mean that C: had 60 sectors, 17 heads, and 1007 cylinders.
-
- Section 6 : CD ROMs
-
- This section gives information that is specific to cdrom drives.
-
- Section 6.1 : Supported and Unsupported Hardware
-
- SCSI CDs with a block size of 512 or 2048 bytes should work. Other
- block sizes will not work.
-
- Section 6.2 : Common Problems
-
- Section 6.2.1 : Unable to mount cdrom.
-
- The correct syntax to mount an ISO-9660 CDROM is
-
- mount -t iso9660 /dev/sr0 /mount_point -o ro
-
- Note that for this to work, you must have the kernel
- configured with support for SCSI, your host adapter,
- the SCSI CDROM driver, and the iso9660 filesystem.
-
- Note that as of Linux 1.1.32, read-only devices such
- as CDROMs CANNOT be mounted with the default read/write
- options.
-
- Section 6.2.2 : Unable to eject cdrom.
-
- Linux attempts to lock the drive door when a piece of
- media is mounted to prevent filesystem corruption due to
- an inadvertant media change.
-
- Section 6.2.3 : Unable to play audio.
-
- The programs Workman or xcdplayer will do this for you.
-
- Section 6.2.4 : Workman or Xcdplayer do not work.
-
- The functions to control audio functions are part of the
- SCSI-II command set, so any drive that is not SCSI-II will probably
- not work here. Also, many SCSI-I and some SCSI-II CDROM drives use a
- proprietary command set for accessing audio functions instead of the
- SCSI-II command set. For NEC drives, there is a version of xcdplayer
- specially adapted to use this command set floating around - try
- looking on tsx-11.mit.edu in pub/linux/BETA/cdrom.
-
- These programs may work with some of the non-SCSI cdrom drives
- if the driver implements the same ioctls as the scsi drivers.
-
- Section 6.2.5: Additional drives on CD ROM changers do not work
-
- Most CD changers assign each disc to a logical unit. Insure that
- you have special files made for each platter (see Section 6.3 : Device Files)
- and see Section 1.10 : LUNS other than 0 don't work
-
- Section 6.3 : Device Files
-
- SCSI CD ROMs use major 11.
-
- Minors are allocated dynamically (See Section 5 : Disks, Subsection 5.3 :
- Device Files for an example) with the first CDROM found being minor 0,
- the second minor 1, etc.
-
- The standard naming convention is
-
- /dev/sr{digit}, although some distributions have used /dev/scd{digit}, with
- examples being
-
- /dev/sr0 /dev/scd0
- /dev/sr1 /dev/scd1
-
- Section 7 : Tapes
-
- This setion gives information that is specific to scsi tape drives.
-
- Section 7.1 : Supported and Unsupported Hardware
-
- Drives using both fixed and variable length blocks smaller than the
- the driver buffer length (set to 32K in the distribution sources) are
- supported.
-
- Parameters (block size, buffering, density) are set with ioctls
- (usually with the mt program), and remain in effect after the
- device is closed and reopened.
-
- Virtually all drives should work, including :
- Archive Viper QIC drives, including the 150M and 525M models
- Exabyte 8mm drives
- Wangtek 5150S drives
- Wangdat DAT drives
-
- Section 7.2 : Common Problems
-
- Section 7.2.1 : Tape drive not recognized at boot time.
-
- Try booting with a tape in the drive.
-
- Section 7.2.2 : Tapes with multiple files cannot be read properly.
-
- When reading a tape with multiple files, the first tar
- is successful, a second tar fails silently, and retrying
- the second tar is successful.
-
- User level programs, such as tar, don't understand file marks.
- The first tar reads up until the end of the file. The second
- tar attempts to read at the file mark, gets nothing, but the
- tape spaces over the file mark. The third tar is successful
- since the tape is at the start of the next file.
-
- Use mt on the no-rewind device to space forward to the next file.
-
-
- Section 7.2.3 : Decompression fails.
-
- Decompressing programs cannot handle the zeros padding the
- last block of the file.
-
- To prevent warnings and errors, wrap your compressed files
- in a .tar file - ie, rather than doing
-
- tar cfvz /dev/nrst0 file.1 file.2 ...
-
- do
-
- tar cfvz tmp.tar.z file.1 file.2 ...
-
- tar cf /dev/nrst0 tmp.tar.z
-
- Section 7.2.4 : Problems taking tapes to/from other systems.
-
- You can't read a tape made with another operating system or
- another operating system can't read a tape written in Linux.
-
- Different systems often use different block sizes. On a
- tape device using a fixed blocksize, you will get errors
- when reading blocks written using a different block size.
-
- To read these tapes, you must set the blocksize of
- the tape driver to match the blocksize used when
- the tape was written, or to variable.
-
- NOTE : this is the hardware block size, not the blocking
- factor used with tar, dump, etc.
-
- You can do this with the mt command -
-
-
- mt setblk <size>
-
- or
-
- mt setblk 0
-
- to get variable block length support.
-
-
- Note that these mt flags are NOT supported under the GNU version
- of mt which is included with some Linux distributions. Instead,
- you must use the BSD derrived Linux SCSI mt command. Source
- should be available from
-
- tsx-11.mit.edu:/pub/linux/ALPHA/scsi
-
- Also note that by default, ST_BUFFER_BLOCKS (defined
- in /usr/src/linux/drivers/scsi/st_options.h in newer
- kernels, st.c in older kernels) is set to allow for
- a 32K maximum buffer size; you'll need to edit the source
- to use larger blocks.
-
- Section 7.2.5 : "No such device" error message.
-
- All attempts to access the tape result in a
-
- "No such device"
-
- or similar error message. Check the type of
- your tape device - it MUST be a character device with
- major and minor numbers matching those specified in subsection
- C, Device Files.
-
- Section 7.2.6 : Tape reads at a given density work, writes fail
-
- Many tape drives support reading at lower densities
- for compatability with older harware, but will not
- write at those same densities.
-
- This is especially the case with QIC drives, which
- will read old 60M tapes but only write new 120, 150,
- 250, and 525M formats.
-
- Section 7.2.6 : Repositioning the tape locks out access to all SCSI devices
-
- This is most common with SCSI drivers which only support one
- outstanding command at a time (see Section 9.5 : Multiple
- devices for an explanation, and Section : Driver feature comparison
- to see which drivers suffer from this limitation), although there may
- be a few tape drives out there which refuse to disconnect.
-
- In either case, you can work arround the problem by editing
- drivers/scsi/st.c and adding a
-
- #define ST_NOWAIT
-
- at the top and rebuilding the kernel.
-
- Note that this will defer error condition reporting until the
- next SCSI command is executed. For this reason, you may want to
- do something like a
-
- mt status
-
- after a mt file positioning command so you don't overwrite tape
- files if the positioning command failed.
-
- You may also wish to consider changing to a better-supported SCSI
- board or newer tape drive if you need to use this workarround
- and are writing multiple files to tapes.
-
- Section 7.3 : Device Files
-
- SCSI tapes use character device major 9.
-
- Due to constraints imposed by Linux's use of a sixteen bit dev_t with
- only eight bits allocated to the minor number, the SCSI tape minor
- numbers are assigned dynamically starting with the lowest SCSI HOST/ID/LUN.
-
- Rewinding devices are numbered from 0 - with the first
- SCSI tape, /dev/rst0 being c 9 0, the second /dev/rst1 c 9 1, etc.
- Non-rewinding devices have the high bit set in the minor number,
- ie /dev/nrst0 is c 9 128.
-
- The standard naming convention is
- /dev/nst{digit} for non-rewinding devices
- /dev/st{digit} for rewinding devices
-
- Section 8 : Generic
-
- This information gives information that is specific to the generic
- scsi driver.
-
- Section 8.1 : Supported Hardware
-
- The Generic SCSI device driver provides an interface for sending
- SCSI commands to all SCSI devices - disks, tapes, CDROMs, media
- changer robots, etc.
-
- Everything electrically compatable with your SCSI board should work.
-
- Section 8.2 : Common Problems
-
- None :-).
-
- Section 8.3 : Device Files
-
- SCSI generic devices use character major 21. Due to constraints
- imposed by Linux's use of a 16 bit dev_t, minor numbers are dynamically
- assigned from 0, one per device, with
-
- /dev/sg0
-
- corresponding to the lowest numerical target/lun on the first
- SCSI board.
-
- Section 9 : Buyers' Guide
-
- A frequent question is:
-
- "Linux supports quite a number of different boards, so which
- scsi host adapter should I get."
-
- The answer depends upon how much performance you expect or need,
- motherboard, and the scsi peripherals that you plan on attaching to
- your machine.
-
- Section 9.1 : Transfer types
-
- The biggest factor affecting performance (in terms of throughput
- and interactive response time during SCSI I/O) is the transfer type used.
- The table below lists the various transfer types, the effects they have
- on performance, and some recomendations as to their use.
-
- Transfer type Description / Performance / Recomendedations
- Pure A pure polled I/O board will use the CPU to handle
- Polled all of the SCSI processing, including the REQ/ACK
- handshaking.
-
- Even a fast CPU will be slower handling the REQ/ACK
- handshake sequence than a simple finite state machine,
- resulting in peak transfer rates of about 150K/sec on
- a fast machine, perhaps 60K/sec on a slow machine
- (through the filesystem).
-
- The driver also must sit in a tight loop as long as the
- SCSI bus is busy, resulting in near 100% CPU utilitization
- and extremely poor responsiveness during SCSI I/O.
- Slow CDROMs which don't disconnect/reconnect will kill
- interactive performance with these boards.
-
- Not recommended.
-
- Interlocked Boards using interlocked polled I/O are essentially
- Polled the same as pure polled I/O boards, only the SCSI REQ/ACK
- handshaking signals are interlocked with the PC bus
- handshaking signals. All SCSI processing beyond
- the handshaking is handled by the CPU.
-
- Peak transfer rates of 500-600K/sec through the
- filesystem are possible on these boards.
-
- As with pure polled I/O boards, the driver must sit
- in a tight loop as long as the SCSI bus is busy,
- resulting in CPU utilization dependant on the
- transfer rates of the devices, and when they
- disconnect/reconnect. CPU utilization may vary
- between 25% for single speed CDs which handle
- disconnect/reconnect properly to 100% for faster
- drives or broken CD ROMs which fail to disconnect/reconnect.
-
- On my 486-66, with a T128, I use 90% of my CPU time to
- sustain a throughput of 547K/sec on a drive
- with a headrate of 1080K/sec with a T128 board.
-
- Sometimes acceptable for slow tapes and CDROMs when
- low cost is essential.
-
- FIFO Boards using FIFO polled I/O put a small (typically 8K)
- Polled buffer between the CPU and the SCSI bus, and often implement
- some amount of intelligence. The net effect is that
- the CPU is only tied up when it is transfering data
- at top speed to the FIFO and when it's handling the
- rest of the interrupt processing for FIFO empty conditions,
- disconnect/reconnect, etc.
-
- Peak transfer rates should be sufficient to handle
- most SCSI devices, and have been measured at up
- to 4M/sec using raw SCSI commands to read 64K
- blocks on a fast Seagate Barcuda with an Adaptec
- 1520.
-
- CPU utilization is dependant on the transfer
- rates of the devices, with faster devices generating
- more interrupts per unit time which require more CPU
- processing time. Although CPU usage may be high
- (perhaps 75%) with fast devices, the system usually
- remains usable. These boards will provide excellent
- interactive performance with broken devices which
- don't disconnect/reconnect (typically cheap CDROM
- drives)
-
- Recommended for persons on a budget.
-
- Slave Drivers for boards using slave DMA program the PC's
- DMA DMA controller for a channel when they do a data transfer,
- and return control to the CPU.
-
- Peak transfer rates are usually handicapped
- by the poor DMA controller used on PCs,
- with one such 8-bit board having problems
- going faster than 140-150K/sec with one mainboard.
-
- CPU utilization is very reasonable, slightly
- less than what is seen with FIFO polled I/O boards.
- These boards are very tollerant of broken devices
- which don't disconnect/reconnect (typically cheap
- CSG limitDROM drives).
-
- Acceptable for slow CDROM drives, tapes, etc.
-
- Busmastering These boards are intelligent. Drivers
- DMA for these boards throw a SCSI command, the destination
- target and lun, and where the data should end up
- in a structure, and tell the board "Hey, I have
- a command for you." The driver returns control
- to various running programs, and eventually the
- SCSI board gets back and says that it's done.
-
- Since the intelligence is in the host adapter
- firmware and not the driver, drivers for these
- boards typically support more features - synchronous
- transfers, tagged queing, etc.
-
- With the clustered read/write patches, peak transfer
- rates through the file system approach 100% of head rate
- writing, 75% reading.
-
- CPU utilization is minimal, irregardless of
- I/O load, with a measured 5% CPU usage while
- accessing a double speed CDROM on an Adaptec 1540
- and 20% while sustaining a 1.2M/sec transfer rate
- on a SCSI disk.
-
- Recommended in all cases where money is not extremely
- tight, the main board is not broken (some broken main boards
- do not work with bus masters), and applications where time
- to data is more important than throughput are not being run
- (bus master overhead may hit 3-4ms per command).
-
- Section 9.2 : Scatter/gather
-
- The second most important driver/hardware feature with respect
- to performance is support for scatter/gather I/O. The overhead of executing
- a SCSI command is significant - on the order of milliseconds. Intelligent bus
- masters like the Adaptec 1540 may take 3-4ms to process a SCSI command before
- the target even sees it. On unbuffered devices, this overhead is allways enough
- to slip a revolution, resulting in a transfer rate of about 60K/sec
- (assuming a 3600RPM drive) per block transfered at a time. So, to maximize
- performance, it is necessary to minimize the number of SCSI commands needed
- to transfer a given amount of data by transfering more data per command. Due
- to the design of the Linux buffer cache, contiguous disk blocks are not
- contiguous in memory. With the clustered read/write patches, 4K worth of
- buffers are contiguous. So, the maximum amount of data which can
- be transfered per SCSI command is going to be 1K * # of scatter/gather
- regions without the clustered read/write patches, 4K * # of regions
- with. Experimentally, we've determined that 64K is a reasonable
- amount to transfer with a single SCSI command - meaning 64 scatter/gather
- buffers with clustered read/write patches, 16 without. With the
- change from 16K to 64K transfers, we saw an improvement from
- 50% of headreate, through the filesystem, reading and writing,
- to 75% and 100% respectively using an Adaptec 1540 series board.
-
- Section 9.3 : Mailbox vs. non-mailbox
-
- A number of intelligent host adapters, such as the Ultrastor, WD7000,
- Adaptec 1540, 1740, and BusLogic boards have used a mailbox-metaphor
- interface, where SCSI commands are executed by putting a SCSI command
- structure in a fixed memory location (mailbox), signaling the board (ie,
- raising the outgoing mail flag), and waiting for a return (incoming mail).
- With this high level programming interface, users can often upgrade to a
- newer board revision to take advantage of new features, such as FAST +
- WIDE SCSI, without software changes. Drivers tend to be simpler to
- implement, may implement a larger feature set, and may be more stable.
-
- Other intelligent host adapters, such as the NCR53c7/8xx family,
- and Adaptec AIC-7770/7870 chips (including the 274x, 284x, and 2940
- boards) use a lower level programming interface. This may prove
- faster since processing can be shifted between the board's processor
- and faster host CPU, allow better flexibility in implementing certain
- features (ie, target mode for arbitrary devices), and these boards
- can be built for less money (In some cases, this is passed on to
- the consumer (ie, most NCR boards)). On the down side, drivers
- tend to be more complex (read : there is more potential for bugs),
- and must be modified to take advantage of the features present on
- newer chips.
-
- Section 9.4 : Bus types
-
- Bus type is the next thing to consider, with choices including ISA,
- EISA, VESA, and PCI. Marketing types often spout of absurd bandwidth
- numbers based on burst transfer rates and fiction, which isn't very
- useful. Instead, I've chosen to state "real-world" numbers based on
- measured performance with various peripherials.
-
- Bus Bandwidth, description,
- ISA Bandwidth is slightly better than 5M/sec for busmastering
- devices. With an ISA bus, arbitration for busmasters is performed
- by the venerable 8237 third party DMA controller, resulting in
- relatively high bus aquisition times. Interrupt drivers are
- tri-state and edge triggered, meaning interrupts cannot be
- shared. Generally, ISA is unbuffered, meaning the host/memory
- bus is tied up whenever a transfer is occuring. No mechanism
- is provided to prevent bus-hogging.
-
- VESA Bandwidth is about 30M/sec. Some VESA systems run the bus out
- of spec, rendering them incompatable with some boards, so this
- should be taken into consideration before purchasing hardware
- without a return guarantee. Generally, VESA is unbuffered, meaning
- meaning the host/memory bus is tied up whenever a transfer is
- occuring.
-
- EISA Bandwidth is about 30M/sec, with busmastering operations generally
- being faster than VESA. Some EISA systems buffer the bus, allowing
- burst transfers to the faster host/memory bus and minimizing impact
- on CPU performance. EISA interrupt drivers may be either tri-state
- edge-triggered or open collector level-active, allowing interrupt
- sharing with drivers that support it. Since EISA allocates a
- separate address space for each board, it is usually less prone to
- resource conflicts than ISA or VESA.
-
- PCI Bandwidth is about 60M/sec. Most PCI systems implement write
- posting buffers on the host bridge, allowing speed mismatches
- on either side to have a minimum impact on bus/CPU performance.
- PCI interrupt drivers are open collector level-active, allowing
- interrupt sharing with drivers that support it. Mechanisms
- are provided to prevent bus hogging, and for both master and
- slave to suspend a bus-mastering operation.
-
- Since PCI provides a plug-n-play mechanism with writeable
- configuration registers on every board, in a separate address space,
- a propperly implemented PCI system is plug-and play.
-
- PCI is extremely strict as to trace length, loading, mechanical
- specifications, etc. and ultimately should be more reliable than
- VESA or ISA.
-
- In summary, PCI is the best PC bus, although it does
- have its dark side. PCI is still in its infancy, and although
- most manufacturers have ironed out the problems, there is
- still stock of older, buggy PCI hardware and broken main
- BIOSes. For this reason, I _strongly_ recommend a return
- guarantee on the hardware. While the latest PCI mainboards
- are truly plug-and-play, older PCI boards may require the
- user to set options with both jumpers and in software (ie,
- interrupt assignments). Although many users have
- resolved their PCI problems, it has taken time and for this
- reason I cannot recommend a PCI purchase if having the
- system operational is extremely time critical.
-
- For many slower SCSI devices, such as disks with head rates
- arround 2M/sec or less, CDROMs, and tapes, there will be little difference
- in throughputs with the different PC bus interfaces. For faster contemporary
- SCSI drives (Typical high end multi-gigabyte drives have a head rate of
- 4-5M/sec, and at least one company is currently ALPHA testing a parallel
- head unit with a 14M/sec head rate), throughput will often be significantly
- better with controllers on faster busses, with one user noting a 2.5 fold
- performance improvement when going from an Adaptec 1542 ISA board to a
- NCR53c810 PCI board.
-
- With the exception of situations where PCI write-posting or a
- similar write-buffering mechanism is being used, when one of the busses in
- your system is busy, all of the busses will be unaccessable. So, although
- bus saturation may not be interfering with SCSI performance, it may have a
- negative effect on interactive performance. Ie, if you have a 4M/sec SCSI
- disk under ISA, you'll have lost 80% of your bandwidth, and in an
- ISA/VESA system would only be able to bitblt at 6M/sec. In most cases,
- a similar impact on processing jobs in the background would also be felt.
-
- Note that having over 16M of memory does not preclude using
- an ISA busmastering SCSI board. Unlike various broken operating
- systems, Linux will double buffer when using a DMA with an ISA controller
- and a transfer is ultimately destined for an area above 16M. Performance
- on these transfers only suffers by about 1.5%, ie not noticably.
-
- Finally, the price difference between bus masters offered with the
- different bus interfaces is often minimal.
-
- With all that in mind, based on your priorities you will have
- certain bus preferences
-
- Stability, time critical installations, EISA ISA VESA PCI
- and poor return policies
- Performance, and typical hobbiest PCI EISA VESA ISA
- installations
-
-
- As I pointed out earlier, bus mastering versus other transfer modes is
- going to have a bigger impact on total system performance, and should be
- considered more important than bus type when purchasing a SCSI controller.
-
- Section 9.5 : Multiple devices
-
- If will you have multiple devices on your SCSI bus, you may
- want to see whether the host adapter/driver that you are considering supports
- more than one outstanding command at one time. This is almost
- essential if you'll be running a tape drive, and very desireable
- if you are mixing devices of different speeds, like a CD ROM and a disk
- drive. If the linux driver only supports one outstanding command, you may
- be locked out of your disk drive while a tape in the tape drive is rewinding or
- seeking to end of media (perhaps for half an hour). With two
- disk drives, the problem will not be as noticeable, allthough
- throughput would approach the average of the two transfer rates
- rather than the sum of the two transfer rates.
-
- Section 9.6: SCSI-I, SCSI-II, SCSI-III FAST and WIDE options, etc.
-
- Over the years, SCSI has evolved, with new revisions of the standard
- introducing higher transfer rates, methods to increase throughput, standardized
- commands for new devices, and new commands for previously supported devices.
-
- In and of themselves, the revision levels don't really mean anything.
- Excepting minor things like SCSI-II not allowing the single initiator option
- of SCSI-I, SCSI is backwards compatable, with new features being introduced
- as options and not mandatory. So, the descision to call a SCSI adapter
- SCSI, SCSI-II, or SCSI-III is almost entirely a marketing one.
-
- Section 9.7 : Driver feature comparison
-
- Driver feature comparison (supported chips are listed in parenthesis)
-
- Driver Simultaneous SG > 1
- Transfer mode Commands limit Boards
- total/LUN
- AM53C974 Busmastering DMA 12s/1s 255s Y
- aha152x FIFO(8k) Polled 7s/1s 255s N
- (AIC6260,
- AIC6360)
- aha1542 Busmastering DMA 8s/1s 16 Y
- aha1740 Busmastering DMA 32s 16 N
- aha274x Busmastering DMA 4s/1s 255s Y
- BusLogic Busmastering DMA 192/31 128s, 8192h Y
- (values are for BT-948/958/958D, older boards support fewer commands)
- eata_dma Busmastering DMA 64s-8192h/2-64 512s, 8192h Y
- fdomain FIFO(8k) Polled 1s 64s N
- (TMC1800, except TMC18c30
- TMC18c30, with 2k FIFO
- TMC18c50,
- TMC36c70)
-
- in2000* FIFO(2k) Polled 1s 255s N
- g_NCR5380 Pure Polled 16s/2s 255s Y
- (NCR5380,
- NCR53c80,
- NCR5381,
- NCR53c400)
- gsi8* Slave DMA 16s/2s 255s
- (NCR5380)
- PAS16 Pure Polled 16s/2s 255s Y
- (NCR5380) or Interlocked Polled
- (fails on some systems!)
- seagate Interlocked Polled 1s/1s 255s N
- wd7000 Busmastering DMA 16s/1s 16 Y
- t128 Interlocked Polled 16s 255s Y
- (NCR5380)
- qlogic Interlocked Polled 1s/1s 255s N
- ultrastor Busmastering DMA 16s/2s 32 Y
- 53c7,8xx Busmastering DMA
- (NCR53c810,
- NCR53c815,
- NCR53c820,
- NCR53c825)
- rel5 1s/1s 127s N
- rel10 8s/1s 127s Y
-
-
- Notes :
- 1. drivers flagged with an '*' are not included with the
- distribution kernel, and binary boot images may be unavailable.
-
- 2. numbers suffixed with an 's' are arbitrary limits set in software
- which may be changed with a compile time define.
-
- 3. hardware limits are indicated by an 'h' suffix, and may differ
- from the software limits currently imposed by the Linux drivers.
-
- 4. unsuffixed numbers may indicate either hard or soft limits.
-
- 5. rel5 of the NCR53c810 driver is included in the stock 1.2.x and
- 1.3.x kernels; rel10 is available via anonymous FTP.
-
- 6. With the exception of the AM53C974, the busmastering DMA boards
- are intelligent; with the NCR executing microcode from main memory,
- the AIC7770 executing microcode from on-chip RAM, and the rest using
- a mailbox-style interface.
-
- Section 9.8 : Board comparison
-
- Board Driver Bus Price Notes
- Adaptec AIC-6260 aha152x ISA chip, not board
- Adaptec AIC-6360 aha152x VLB chip, not board
- (Used in most
- VESA/ISA multi-IO
- boards with SCSI,
- Zenon mainboards)
- Adaptec 1520 aha152x ISA
- Adaptec 1522 aha152x ISA $80 1520 w/FDC
- Adaptec 1510 aha152x ISA 1520 w/out boot ROM,
- won't autoprobe.
- Adaptec 1540C aha1542 ISA
- Adaptec 1542C aha1542 ISA 1540C w/FDC
- Adaptec 1540CF aha1542 ISA FAST SCSI-II
- Adaptec 1542CF aha1542 ISA $200 1540CF w/FDC
- Adaptec 1640 aha1542 MCA
-
- Adaptec 1740 aha1740 EISA discontinued
- Adaptec 1742 aha1740 EISA discontinued, 1740
- w/FDC
- Adaptec 2740 aha274x EISA
- Adaptec 2742 aha274x EISA w/FDC
- Adaptec 2840 aha274x VLB
- Adaptec 2842 aha274x VLB w/FDC
- Adaptec 2940 aha274x PCI
- Allways IN2000 in2000 ISA
- BusLogic BT-948 BusLogic PCI $180 Ultra SCSI
- BusLogic BT-958 BusLogic PCI $230 Wide Ultra SCSI
- (see section 4.8 for additional BusLogic board descriptions)
- DPT PM2011 eata_dma ISA FAST SCSI-II
- PM2012A eata_dma EISA FAST SCSI-II
- PM2012B eata_dma EISA FAST SCSI-II
- PM2021 eata_dma ISA FAST SCSI-II
- PM2022 eata_dma EISA FAST SCSI-II
- PM2024 eata_dma PCI FAST SCSI-II
- PM2122 eata_dma EISA FAST SCSI-II
- PM2322 eata_dma EISA FAST SCSI-II
- PM2124 eata_dma PCI FAST SCSI-II
- PM2124 eata_dma PCI FAST SCSI-II
- PM2124 eata_dma PCI FAST SCSI-II
- PM2124 eata_dma PCI FAST SCSI-II
- PM2124 eata_dma PCI FAST SCSI-II
- PM2124 eata_dma PCI FAST SCSI-II
- PM2041W eata_dma ISA Wide Single-ended
- SCSI-II
- PM2041UW eata_dma ISA Ultra Wide Single-ended
- PM2042W eata_dma EISA Wide Single-ended
- PM2042UW eata_dma EISA Ultra Wide Single-ended
- PM2044W eata_dma PCI Wide Single-ended
- PM2044UW eata_dma PCI Ultra Wide Single-ended
- PM2142W eata_dma EISA Wide Single-ended
- PM2142UW eata_dma EISA Ultra Wide Single-ended
- PM2144W eata_dma PCI Wide Single-ended
- PM2144UW eata_dma PCI Ultra Wide Single-ended
- PM3021 eata_dma ISA multichannel
- raid/simm sockets
- PM3122 eata_dma EISA multichannel/raid
- PM3222 eata_dma EISA multichannel
- raid/simm sockets
- PM3224 eata_dma PCI multichannel
- raid/simm sockets
- PM3334 eata_dma PCI Wide Ultra SCSI
- multichannel
- raid/simm sockets
-
- DTC 3290 aha1542 EISA Although it should work,
- due to documentation
- release polcies, DTC
- hardware is unsupported
- DTC 3130 53c7,8xx PCI '810
- DTC 3130B 53c7,8xx PCI '815
- DTC 3292 aha1542 EISA 3290 w/FDC
- DTC 3292 aha1542 EISA 3290 w/FDC
- Future Domain 1680 fdomain ISA FDC
- Future Domain 3260 fdomain PCI
- NCR53c810 (boards sold 53c7,8xx PCI $60 chip, not board. Boards
- by FIC, Chaintech, (board) don't include
- Nextor, Gigabyte, etc. BIOS, although most
- Mainboards with chip by non-NCR equipped main
- AMI, ASUS, J-Bond, boards have the SDMS
- etc. Common in DEC BIOS
- PCI systems)
- NCR53c815 ( 53c7,8xx PCI $100 NCR53c810 plus
- Intel PCISCSIKIT, bios
- NCR8150S, etc)
- NCR53c825 53c7,8xx PCI $120 Wide variant of
- NCR53c815. Note that
- the current Linux
- driver does not
- negotiate for wide
- transfers.
- Pro Audio Spectrum 16 pas16 ISA Sound board w/SCSI
- Seagate ST01 seagate ISA $20 BIOS only works with
- some drives
- Seagate ST02 seagate ISA $40 ST01 w/FDC
- Sound Blaster 16 SCSI aha152x ISA Sound board w/SCSI
- Western Digital 7000 wd7000 ISA w/FDC
- Trantor T128 t128 ISA
- Trantor T128F t128 ISA T128 w/FDC and
- support for high IRQs
- Trantor T130B g_NCR5380 ISA
- Ultrastor 14F ultrastor ISA w/FDC
- Ultrastor 24F ultrastor EISA w/FDC
- Ultrastor 34F ultrastor VLB
-
- Notes :
- 1. Trantor was recently purchased by Adaptec, and some products are being
- sold under the Adaptec name.
-
- 2. Ultrastor recently filed for Chapter 11 Bankruptcy, so technical
- support is non-existant at this time.
-
- 3. The price for the busmastering NCR53c810 boards is not
- a typo, includes the standard ASPI/CAM driver package for
- DOS, OS/2 and Windows (32 bit access), and other drivers are
- available for free download.
-
- Some people have had luck with the following companies :
-
-
- SW (swt@netcom.com) (214) 907-0871 fax (214) 907-9339
-
- As of 23 Dec 1995, their price was $53 on '810 boards.
-
- 4. Adaptec's recent SCSI chips show an unusual sensitivity
- to cabling and termination problems. For this reason,
- I cannot recommend the Adaptec 154x C and CF revisions or the
- 2xxx series.
-
- Note that the reliability problems do not apply to the
- older 154x B revision boards, 174x A revision boards,
- or to my knowledge AIC-6360/AIC-6260 based boards (1505, 1510,
- 1520, etc).
-
- Also, the quality of their technical support has slipped markedly, with
- long delays becoming more common, and their employees being ignorant
- (suggesting there were non-disclosure policies affecting certain
- literature when there were none), and hostile (ie, refusing to pass
- questions on to some one else when they couldn't answer them).
-
- If users desire handholding, or wish to make a political statement,
- they should take this point into consideration. Otherwise, the
- Adaptec 152x/1510/1505 are nicer than the other ISA boards in the
- same price range, and there are some excellent deals on used and
- surplus 154x B revision boards and 1742 boards which IMHO outweigh
- the support problems.
-
- 5. All DPT boards can be upgraded with cache and raid modules, most of the
- boards are also available in Wide and/or Differential versions.
-
- 6. The various NCR boards are not entirely equivallent. Ie, while
- the ASUS SC200 uses active termination, many other NCR53c810
- boards use passive termination. Most '825 boards use active
- termination, but some use a ROM for BIOS and others have a
- FLASH ROM. Most '825 boards have a WIDE external connector,
- WIDE internal connector, and narrow internal connector, although
- a few (ie, CSC's less expensive model) lack the narrow internal
- connector.
-
- Section 9.9 : Summary
-
- Most ISA, EISA, VESA, and PCI users will probably be served best by a
- BusLogic MultiMaster board, due to its performance, features such as active
- termination, and Adaptec 1540 compatability. There are a number of models
- available with EISA, ISA, PCI, and VESA local bus interfaces, in single ended
- and differential, and 8/16 bit SCSI bus widths. The most recent Ultra SCSI PCI
- models, the BT-948/958/958D, also include Flash ROM for easy firmware updates,
- as well as automatic "smart" termination.
-
- People with the need for the highest possible IO performance at their
- fingertips should consider the boards from DPT, which are the only ones
- that support RAID, caching and more than one SCSI channel.
-
- People with PCI systems should consider NCR53c8xx based boards. These
- are bus mastering SCSI controllers, '810s are available quantity one for $53
- (ie, cheaper than the Adaptec 1520). C't magazine benchmarked the boards
- as faster than both the Adaptec 2940 and BusLogic BT-946C (under DOS),
- and they get reasonable performance under Linux (up to 6M/sec through the
- file system ). The disadvantages of these boards versus the BusLogics
- are that they aren't Adaptec 1540 compatable, may or may not come with
- active termination, you'll need the latest driver revision (standard
- in 1.3.5x, also available via anonymous FTP for 1.2.x) to make full use
- of the hardware, and are more likely to have problems than with a mailbox
- interface board like a BusLogic or DPT.
-
- Where everything working right on the first try is imperative, a
- BusLogic MultiMaster or DPT board is probably optimal due to the
- complexity and potential for problems in non-mailbox interface boards like
- the NCR53c8xx and Adaptec AIC7xxx .
-
- People wanting non-PCI SCSI on a limited budget will probably be
- happiest finding a surplus or used Adaptec 154x B revision or 174x A
- revision, or an Adaptec 1520 clone of some sort (about $80) if they want
- new hardware. These boards offer reasonable throughput and interactive
- performance at a modest price.
-
- Section 10 : Assignment of minor numbers
-
- Due to constraints imposed by Linux's use of a sixteen bit dev_t with
- only eight bits allocated to the minor number, SCSI disk, tape,
- CDROM, and generic minor numbers are assigned dynamically.
- iaccording to the following procedure :
-
- For all SCSI host adapters, from scsi0 through scsiN
- For all SCSI IDs on this bus, from 0 through 7, except for
- this host adapter's ID
- For all logical units, from 0 through max_scsi_luns
- - Probe the bus, target, and LUN combination by
- issuing a TEST UNIT READY command. If we don't
- think a unit was here, don't probe any more LUNs
- on this bus + SCSI ID.
- - Send an INQUIRY command to determine what we've
- found; including the device type, vendor, model,
- firmware revision, etc.
- - Pass the results of this to a special recognition
- function for each high level driver present (i.e. disk,
- tape, etc). Attach this device to the next available
- unit for any drivers that are willing to drive this.
- The generic device will attach to all devices.
- - If it was SCSI-I, or in a list of devices known
- not to handle multiple LUNs, don't probe any more
- LUNs on this bus + SCSI ID.
- - If it is a device known to have multiple LUNs, then
- a scan of the full LUN spectrum is forced, overriding
- max_scsi_luns.
-
- There are frequently problems with this approach because if you have a
- system where some devices are only present some of the time, then the
- minor numbers for a given device will depend upon which devices were
- present at boot time. This can present problem, because rc scripts or
- the file /etc/fstab might contain instructions for mounting specific
- partitions which fails when the disk appears with a different minor
- number.
-
- This problem has not yet been fully solved. There is a
- program which can be found on tsx-11 that creates a /dev/scsi heirarchy
- based upon host number, id and lun. This is a bit clumsy, but it would
- help to alleviate some of the problems.
-
- A better solution will probably come out of the /proc/scsi pseudo
- directory. This is currently a work in progress, so at present we cannot
- say exactly the form of the solution, but at the time of this writing
- this appears to be a promising approach for resolving some of these
- issues.
- EOF
-